Форум программистов, компьютерный форум CyberForum.ru

Проблемы со свойством - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C Помогите разобраться с типами данных http://www.cyberforum.ru/objective-c/thread360401.html
В чем различие между типами данных int и NSNumber? NSNumber - это что-то вроде аналога типа object в C#? В каких случаях лучше использовать тип NSInteger, а в каких NSNumber*?
Objective-C Воспроизведение аудио потока Для воспроизведения потока использую AVPlayer с аргументов NSURL. Подскажите, как заставить плеер работать через прокси сервер? http://www.cyberforum.ru/objective-c/thread355912.html
Objective-C Объясните сущность self и super
Здравствуйте. Возникло недопонимание указателей self и super. self - это аналог this?Правильно? Т.е. Если например в С у нас есть метод и мы его хотим вызвать в другом методе то это будет выглядеть так void Method1(int a,int b) { } void Method2() { Method1(1,2);
ref Objective-C
есть на С# такая штука как ref (Reference) (вот статейка http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx, если кому интерестно). Ее суть состоит в том что я могу послать ссылку на объект в параметрах функции и тогда в функции буду выполнять любые действия с объектом и после окончания функции состояние сохранится там где я ее вызвал.. может немного криво написано, но сейчас кину пример на С#...
Objective-C [sender tag] http://www.cyberforum.ru/objective-c/thread353603.html
Присваиваю кнопке tag myButton.tag=55;в обработчике нажатия кнопки хочу узнать tag -(IBAction) clicButton: (id) sender{ NSLog(@"%d",); }смотрю в логе, показывает 0... почему не хочет показать 55 ума не приложу, может кто стыкался с этой проблемой и знает в чем проблема. Заранее спасибо за ответы)
Objective-C Кодировка: кракозябры при выводе в консоль Здравствуйте! Написал следующий код:) #import <Foundation/Foundation.h> int main (int argc, const char * argv) { NSAutoreleasePool * pool = init]; NSString *myName = @"Иван Иванов"; NSString *myCardName = @"VISA"; подробнее

Показать сообщение отдельно
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
19.10.2011, 12:16     Проблемы со свойством
Вместо
Objective-C
1
prop = [NSArray arrayWithObjects:@"1", @"2", nil]
нужно
Objective-C
1
self.prop = [NSArray arrayWithObjects:@"1", @"2", nil]
Поскольку в первом случае сеттер не будет вызван( если проперти привязана к переменной prop в интерфейсе) Это значит, что ретейна не будет и после дрейна текущего авторелиз пула память из под этого объекта будет помечена свободной и очень быстро будет перезаписана. Чаще всего можно будет увидеть ошибку "объект не распознает селектор", тк вместо массива там будет записано что-то другое.

Впрочем, до дрейна авторелиз пула падения проги при обращении к массиву не будет.

Можно провести забавный эксперимент:
Objective-C
1
2
3
4
5
6
7
8
9
10
- (id) init { 
if( (self = [super init]) ) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
prop = [NSArray arrayWithObjects:@"1", @"2", nil];
[pool drain];
NSArray* notRelatedArray = [NSArray arrayWithObjects:@"3", @"4", nil];
NSLog(@"%@", [prop objectAtIndex:0]);
}
return self;
}
И посмотреть на лог. Потом заменить prop = на self.prop = и посмотреть разницу.Ее,конечно, может и не быть, но на моей системе была
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru