سؤال

حسنا، لقد بدأت برمجة iPod / iPhone باستخدام رئيس أول تطوير iPhone (O'Reilly) وأنا أكد رمز الخروج من الكتاب. هناك مشكلتان، أحد البرمجة ذات الصلة والآخر ليس كذلك.

  • أنا لا أفهم شكل طرق الهدف C. أحصل على عدد قليل من الأخطاء الآن، بناء على شفرة المصدر من الكتاب. مما يدفعني إلى مشكلتي القادمة.

  • بعض الكود هو عربات التي تجرها الدواب. أعتقد ذلك لأنني لم أستطع تشغيل الرمز دون تعديله. يحتوي الكتاب على بعض الأخطاء المطبعية في النص نظرا لأن الطبعة الأولى و Whatnot، ولكن بإمكاني "تحديد" الرمز الذي يجب أن يفعله به؟

وبالتالي... أين يمكنني معرفة المزيد حول طرق الهدف - C وكيف يعملون من حيث الهيكل وأين تذهب نوع المرتج والجدات؟

بالنسبة لأولئك الذين لديهم كتاب، أنا في منتصف تطبيق Instatweet نحو البداية.

شكرا.

هل كانت مفيدة؟

المحلول

ربما ستكون المقارنة بين لغة "تشبه" و obj-c مفيدة - دعنا نذهب مع جافا. تخيل فئة مستطيلة مع طريقة CystBackgroundColor. سنفترض أن لدينا مثيل مستطيل يسمى chect.

في جافا، من المحتمل أن يكون توقيع الطريقة

public void setBackgroundColor(int r, int g, int b) { ... }

في الهدف، ج، تعد الحجج جزءا من توقيع الطريقة، لذلك قد يكون

- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;

تعني "-" أنها طريقة مثيل على فئة المستطيل. (الفراغ) هو نوع عودة الطريقة. ثم تأتي الحجج. يحدد كل كولون حجة، والتي تتم كتابتها (كل Arg (int) في هذا المثال).

دعنا نقارن دعوة هذه الأساليب. جافا:

rect.setBackgroundColor(255, 255, 0);

OBJ-C:

[rect setBackgroundColorWithRed:255 green:255 blue:0];

الكثير من الناس يتعثرون في بناء جملة OBJ-C - أنت لست وحدك. نأمل أن هذه المقارنة ستجعل الأمور أكثر وضوحا. كما أنه يمثل قوة لغوية من الهدف - ج: في وقت الاتصال، من الواضح ما هي حججك. إذا كنت أقرأ التعليمات البرمجية ورأيت طريقة Java التي يتم استدعاؤها، فلن يكون من الواضح أن الحجج حمراء وأزرق وأخضر. في OBJ-C، من الواضح بشكل مؤلم أننا نحدد قيم الألوان الفردية. منحت، معظم المطورين يمكن أن تخمن ما هي الحجج الثلاثة لطريقة SETCOLOR، ولكن الطرق أكثر تعقيدا تحصل على مربكة. فيما يلي طريقة أكثر تعقيدا محددة في جافا والهدف - ج:

static Dog createDog(  String name
                     , int age
                     , boolean isNeutered
                     , String ownerName
                    );
+ (Dog *)createDogNamed:(NSString *)name 
     age:     (int)        age 
     neutered:(BOOL)       isNeutered 
     owner:   (NSString *) owner;

في وقت الاتصال:

Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];

الهدف - C هو أكثر سرعة، ولكن أكثر قابلية للقراءة. في مثال Java، ليس من الواضح حقا ما تعني الحجج "2" و "الحقيقية". الهدف - ج يقرأ تقريبا مثل الإنجليزية.

قام أشخاص آخرون بنشروا روابط لأدلة أكثر متعمقا، لكنني آمل أن يكون هذا يجعلك تجاوز كتل التركيز النحوية بما يكفي لجعل الروابط مفيدة. أنا سعيد للإجابة على المزيد من الأسئلة المحددة لديك. في تجربتي، لدى OBJ-C Newbies وقت صعب حقا مع بناء جملة، ثم انقرS ويشعر الرائعة. أصبر!

نصائح أخرى

تعريف طريقة موضوعية C واضحة جدا. انها تشبه إلى حد ما تعريف استدعاء وظيفة C العادية، في الواقع. الإضافة الكبيرة هي خيار تسمية المعلمات. إليك مثال:

-(int)addX:(int)x toY:(int)y
{
    return x + y;
}

ما يمكنك استخدامه عن طريق إرسال رسالة إلى الكائن المناسب:

int z = [object addX:x toY:y];

في هذه الحالة، أعطيت المعلمات والحجج نفس الأسماء، مما يجعل من الواضح كيف يصطف الأشياء. يمكنك فقط القيام به بسهولة:

int z = [object addX:4 toY:7];

وبعد ذلك، z سيكون 11.

تحقق من أبل مقدمة إلى الهدف ج.

تنسيق الطريقة الأساسية هو

-(ReturnType *)methodName:(VariableType *)variableName{

}

علي سبيل المثال:

-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{

}

يجب عليك أيضا التحقق من موقع الكتاب الإلكتروني للكتاب.

فعلت نفس الشيء الذي قمت به. التقطت رأس أول كتاب تطوير iPhone الأول أيضا (يغطي 3.1 SDK).

ركضت جميع البرامج التعليمية الموجودة فيه وعثرت على خطأ واحد فقط تسبب في عدم عمل طلبي (أجريت علما به في كتابي ولكن لا يمكنني العثور عليه الآن ...).

لذلك بعد ذلك أدركت أنني مصاب بالضبط نفس المشكلة التي تواجهها مع بناء الجملة.

التقطت "برمجة في الهدف - C 2.0" من Stephen G. Kochan. (إنه ببساطة رائعة.) الكتاب واضح وموجز. لم أحصل حتى على 25٪ من الكتاب وتم الرد على جميع أسئلتي.

ألقى قراءة رمز القراءة - C لعدة أشهر لأنني معتاد على بناء جملة مختلف أن ذهني استغرق بعض الوقت لضبط الطريقة التي يتوقعها الهدف - C.

ما أجده هو رمز موضوعي، يصبح رمز حقا مقروءا بمجرد التفاف عقلك حوله. مثال كارل نوروم أعلاه هو دليل كبير على قابلية القراءة.

[object addX:4 toY:7];

لا تحصل على أكثر من ذلك بكثير من ذلك!

أيضا بعض المصطلحات مختلفة بعض الشيء. ألقى "المراسلة كائن" مقابل "استدعاء طريقة" لي لبضعة أسابيع أيضا.

آمل أن تساعدك توصية الكتاب، فقد ساعدني كثيرا.

هناك بعض موارد التعلم الكبيرة من Apple:

هدف التعلم-ج: التمهيدي

و

إرشادات الترميز للكاكاو

حظ سعيد!

اقرأ البرمجة الكاكاو (ص) لنظام التشغيل Mac (R) OS X (Edition 3), ، إنه الكتاب المقدس لنظام التشغيل Mac و Cocoa.

ليس لدي أي مشاكل معها ولكن ضع في اعتبارك أن API تتحرك دائما إلى الأمام حتى تكون هناك تحديثات طفيفة / تغييرات طفيفة. لكنني لم أجد أي شيء من شأنه أن يمنعني من الانتهاء من جميع أمثلة التعليمات البرمجية والتمارين.

هذا هو الكتاب القراءة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top