Objective-C: განსხვავება გადახედვებს შორის

[შეუმოწმებელი ვერსია][შეუმოწმებელი ვერსია]
შიგთავსი ამოიშალა შიგთავსი დაემატა
r2.7.1) (ბოტის დამატება: ta:ஒப்செக்டிவ் சி
No edit summary
ხაზი 98:
 
obj ობიექტისტვის მესეჯის გაგზავნა [[C++]]ში მოითხოვს შემდეგ კოდს:
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="cpp">
obj->method(parameter);
</source>
</div>
 
რომელიც Objective-Cში იწერება როგორც შემდეგ:
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
[obj method:parameter];
</source>
</div>
 
ორივე პროგრამირების სტილს მიაჩნია თავისი პლიუსები და მინუსები.
Line 127 ⟶ 131:
ინტერფეისის იყებს ასეთ ფორმას:
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
@interface classname : superclassname {
Line 139 ⟶ 144:
@end
</source>
</div>
 
ნიშანი "+" ანიშნებს კლასის მეთოდს, "-" კი კლასის ნიმუშის მეთოდს. კლასის მეთოდებს კლასის ნიმუშის ცვლადებთან მიღვწვდომა არა აქვთ.
Line 144 ⟶ 150:
C++ში თუ გადავთარმნით ზემოთ მოცემულ კოდს იგი უდრის:
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="cpp">
class classname : superclassname {
Line 158 ⟶ 165:
};
</source>
</div>
 
შეამჩნიეთ რომ instanceMethod2WithParameter წარმოადგენს Objective-Cის დასახელებული პარამეტრის (named parameter) შესაძლებლობას რომელიც არ არსებობს [[C (პროგრამირების ენა)|C]]/[[C++]]ში.
Line 167 ⟶ 175:
ზოგიერთ შემთხვევაში (სისტემური [[API]]-ის წერის დროს) პრაქტიკულია ტექსტუალური ახწერის დამატება ყოველივე პარამეტრის წინ.
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
-(void) setRange:(int)start :(int)end;
-(void) importDocumentWithName:(NSString *)name withSpecifiedPreferences:(Preferences *)prefs beforePage:(int)insertPage;
</source>
</div>
 
 
==== იმპლემენტირება ====
Line 177 ⟶ 186:
ინტერფეისი მარტო აღნიშნავს კლასის ინტერფეისს და არა თითონ მეთოდებს; მთავარი კოდი იწერება იმპლემეტირების დროს. იმპლემენტირების ფაულების გაფართოება არის .m.
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
@implementation classname
Line 187 ⟶ 197:
@end
</source>
</div>
 
მეთოდები აწერებიან თავიანთი ინტერფეისის ახწერის მიხედვით.
Objective-Cს და [[C (პროგრამირების ენა)|Cს]] შედარება:
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
-(int)method:(int)i {
Line 196 ⟶ 208:
}
</source>
</div>
---------------------------------
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="c">
int function(int i) {
Line 202 ⟶ 216:
}
</source>
</div>
 
სინტაქსი ხელს უწყობს პარამეტრების [[დასახელებული პარამეტრი|პსევდო-დასახელებას]].
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
-(int)changeColorToRed:(float)red green:(float)green blue:(float)blue
Line 210 ⟶ 226:
[myColor changeColorToRed:5.0 green:2.0 blue:6.0];
</source>
</div>
 
შინგნით როგორ არის მეთოდი ახწერილი დამოკიდებულია Objective-C ვერსიაზე.
Line 221 ⟶ 238:
როცა Objective-Cში კლასი დაწერილია, მისი ნიმუშის შექმნა შესაძლო ხდება. ეს ხდება ახალი ობიექტისთვის საკმარისი მეხსიერების ნაყოფის მიცემით და მისი მონაცემის მინიჭებით. სანამ ეს ორი ეტაპი არ არის გავლილი ობიექტი ვერ იმოქმედებს. ეს ტიპიურად ერ ხაზი კოდით ხდება:
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
MyObject * o = [[MyObject alloc] init];
</source>
</div>
 
alloc-ის დაძახებით ვაძლევთ საკმარის მეხსიერებას რომ მისი ნიმუშის ცვლადების გამოყენება შიეძლებოდეს, შემდეგ შესაძლოა რომ init მეთოდი სხვანაირადაც იყოს დაწერილი რიმ მან სხვა მონაცემები მიანიჭოს კლასის ნიმუშს.
init მეთოდი ხშირად ასე იწერება:
 
<div style="border:1px dashed #2fab6f;padding:1em;margin:1em 0;">
<source lang="objc">
-(id) init {
Line 241 ⟶ 261:
}
</source>
</div>
 
=== პროტოკოლები ===
მოძიებულია „https://ka.wikipedia.org/wiki/Objective-C“-დან