- 1
- 2
- 3
- 4
- 5
- 6
- (void) setStr:(NSString*) strT {
if (strt) {
[_str retain];
_str = strT;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−106
- (void) setStr:(NSString*) strT {
if (strt) {
[_str retain];
_str = strT;
}
}
чудо сеттер от юниора
krypt 08.07.2013 11:46 # +1
10 ударов за проверку на nil, 10 за retain не той переменной и 20 за отсутствие release.
vistefan 08.07.2013 12:00 # +2
За отсутствие release 19.
Гуглите наказание апостола Павла.
mas_an 08.07.2013 12:07 # 0
krypt 08.07.2013 12:08 # +2
mas_an 08.07.2013 14:05 # 0
krypt 08.07.2013 14:24 # +2
И если без ARC перед вами вас полная программы, то с ним придётся проявлять паранормальные способности, чтобы понять, чтоже там происходит-то.
mas_an 08.07.2013 15:29 # 0
krypt 08.07.2013 15:50 # 0
mas_an 08.07.2013 15:54 # 0
krypt 08.07.2013 15:59 # 0
mas_an 08.07.2013 16:02 # 0
NAlexN 08.07.2013 18:26 # −2
Сам тоже предпочитаю не пользоваться ARC, но держать код в состоянии, готовом к переходу на ARC за 3 минуты без геморроя. Рецептов то не так много:
1) (Самый важный) Для каждого класса сделать фактори метод, возвращающий autoreleased объект. Отказаться от использования - (id) initWith...
2) Не переопределять сеттеры. Только в краней необходимости и с особым вниманием
3) Инициализировать объекты-свойства только через сеттер: self.myProperty = [MyProperty propertyWith...]
4) В dealloc занулять все свойства: self.myProperty = nil; ...
Платформа cocos2d, к примеру, предполагает повсеместное использование autoreleased объектов (пункт 1), и это очень удобно. В конце концов сейчас, когда пишу что то в UIKit'е, немного бесит отсутствие метода + (instancetype) instanceWith... у большинства классов. Приходится городить alloc - init - autorelease, потому что делать alloc - init, а потом, где нибудь в конце метода release - верный путь получить проект с кучей утечек памяти.
krypt 09.07.2013 11:21 # 0
А сеттеры вы как реализовывать будете?
NAlexN 09.07.2013 17:37 # 0
И, как я написал, переопределять сеттер не рекомендуется, и вообще это дурной тон.
tirinox 08.07.2013 17:38 # 0