Objective-C/მეთოდების გამოძახება

ვიკიწიგნებიდან
Jump to navigation Jump to search

ობიექტზე მეთოდის გამოძახება (Objective-C-ში ამას ხშირად გზავნილის გაგზავნას უწოდებენ) ასე გამოიყურება:

[object method];
[object methodWithInput:input];

მეთოდს შეუძლია დააბრუნოს მნიშვნელობა:

output = [object methodWithOutput];
output = [object methodWithInputAndOutput:input];

თქვენ აგრეთვე შეგიძლიათ გამოიძახოთ მეთოდი კლასზე, მათ შორის ობიექტის შექმნაც ასე ხდება. ამ მაგალითში ჩვენ ვიძახებთ string მეთოდს NSString კლასზე, რომელიც ახალ NSString ობიექტს აბრუნებს:

 
id myObject = [NSString string];

id ტიპი აღნიშნავს რომ myObject ცვლადი შეიძლება იყოს ნებისმიერი სახის ობიექტი, ასე რომ ამ ტიპის ცვლადის კლასი და მეთოდები არაა ცნობილი როდესაც თქვენ აკომპილირებთ პროგრამას

ამ მაგალითში ცნობილია, რომ ტიპი არის NSString, ასე რომ ჩვენ შეგვიძლია ტიპი ცხადად მიუთითოთ:

 
NSString* myString = [NSString string];

ახლა ეს NSString ტიპის ცვლადია, ამიტომ კომპილატორი გაგვაფრთხილებს, როდესაც ჩვენ ვეცდებით ისეთი მეთოდის გამოძახებაც რომელიც NSString-ში არაა განხორციელებული.

მიაქციეთ ყურადღება ტიპის სახელის მაჯვნივ ვარსკვლავის ნიშანს (*). ყველა ობიექტური ტიპი Objective-C-ში არის მიმთითებელის ტიპი.

ჩადგმული გზავნილები[რედაქტირება]

ბევრ პროგრამირების ენაში ჩადგმული მეთოდები ასე გამოიყურება:

 
function1 ( function2() );

ფუნქცია function2-ის შედეგი გადაეცემა არგუმენტად function1-ს. Objective-C-ში, ჩადგმული გზავნილები ასე გამოიყურება:

 
[NSString stringWithFormat:[prefs format]];

ნუ გამოიყენებთ ჩადგმულ გზავნილებს ერტზე მეტჯერ, ასეთი კოდი ადვილად ხდება წაუკითხვადი.

მრავალ არგუმენტიანი მეთოდები[რედაქტირება]

ზოგი მეთოდი იღებს ბევრ შემოსავალ არგუმენტს. Objective-C-ში, მეთოდის სახელი შეიძლება დანაწევრებული იყოს მრავალ სეგმენტად. სათაურში მრავალარგუმენტიანი მეთოდი ასე გამოიყურება:

 
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

თქვენ შეგიძლიათ ეს მეთოდი ასე გამოიძახოთ:

BOOL result = [myData writeToFile:@"/tmp/log.txt" atomically:NO];

ეს არა მხოლოდ სახელობითი არგუმენტებია. მეთოდის სახელი არის writeToFile:atomically: შესრულების გარემოში.