Я только что написал код. У меня есть мой собственный класс на заказ. В этом пользовательском классе под названием 'WonderfulNumbers' у меня есть метод, который выглядит следующим образом
- (NSString *)storedNumberAsString {
NSString *stringToReturn = [[NSString alloc]initWithFormat:@"Hello World"];
return [stringToReturn autorelease];
}
Я, очевидно, затем #import "WonderfulNumbers" в основной и т. Д.
тогда в моем основном у меня есть IBAction.
это читается как следующее
-(IBAction)displaySomeText:(id)sender {
WonderfulNumbers *myNumber = [[WonderfulNumbers alloc]init];// Step 1
NSString *numberString = [myNumber storedNumberAsString];// Step 2
[textView insertText:numberString];// Step 3
//textView is a variable of NSTextView.
[myNumber release];// Step 4
}
Я получаю пошаговый процесс и логику этого.
То, что мне нравится знать и пытаться успокоить себя, это то, что именно происходит на шаге 2.
Я понимаю шаги 1, 3 и 4.
Но на шаге 2 я создал переменную NSString с именем 'numberString', и она, очевидно, содержит объект с именем 'myNumber' с применением вышеописанного метода. Имеет смысл.
Что я хочу знать, так это то, что я никогда не выделял и не инициализировал объект 'numberString' класса NSString. Как я могу тогда использовать это.
Я знаю, что не освобождаю его, поскольку он никогда не выделяется ... но я инициализировал его, просто выполнив [myNumber storeNumberAsString];
Небольшое объяснение было бы замечательно. Спасибо тем, кто отвечает.
P.S. Я знаю, что все в target-c является объектом, но только ради этого аргумента, поскольку технически «numberString» не «создается с помощью allocate и init», правильно ли называть эту переменную?
Мне кажется, я знаю разницу между ними, но просто хочу успокоиться.
Спасибо.