Objective-C NSString Проблема - PullRequest
       1

Objective-C NSString Проблема

0 голосов
/ 25 февраля 2011

У меня есть глобальные строки:

NSString *test = nil;
NSString *test1 = nil;

Нужно ли что-то выделять?Я постоянно изменяю значение String в программе и получаю ошибку EXC_BAD_ACCESS с сегментированным элементом управления, который убивает программу.

Есть предложения?

*** Call stack at first throw:
(
    0   CoreFoundation                      0x00db6be9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x00f0b5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x00db86fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x00d28366 ___forwarding___ + 966
    4   CoreFoundation                      0x00d27f22 _CF_forwarding_prep_0 + 50
    5   tipApp                              0x00005f69 -[tipAppViewController exact] + 54
    6   tipApp                              0x00004907 -[tipAppViewController segmentedControlIndexChanged] + 129
    7   UIKit                               0x002bfa6e -[UIApplication sendAction:to:from:forEvent:] + 119
    8   UIKit                               0x0034e1b5 -[UIControl sendAction:to:forEvent:] + 67
    9   UIKit                               0x00350647 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    10  UIKit                               0x0034e16c -[UIControl sendActionsForControlEvents:] + 49
    11  UIKit                               0x0038d6b2 -[UISegmentedControl setSelectedSegmentIndex:] + 574
    12  UIKit                               0x0039217e -[UISegmentedControl touchesBegan:withEvent:] + 971
    13  UIKit                               0x002e4025 -[UIWindow _sendTouchesForEvent:] + 395
    14  UIKit                               0x002c537a -[UIApplication sendEvent:] + 447
    15  UIKit                               0x002ca732 _UIApplicationHandleEvent + 7576
    16  GraphicsServices                    0x016eca36 PurpleEventCallback + 1550
    17  CoreFoundation                      0x00d98064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    18  CoreFoundation                      0x00cf86f7 __CFRunLoopDoSource1 + 215
    19  CoreFoundation                      0x00cf5983 __CFRunLoopRun + 979
    20  CoreFoundation                      0x00cf5240 CFRunLoopRunSpecific + 208
    21  CoreFoundation                      0x00cf5161 CFRunLoopRunInMode + 97
    22  GraphicsServices                    0x016eb268 GSEventRunModal + 217
    23  GraphicsServices                    0x016eb32d GSEventRun + 115
    24  UIKit                               0x002ce42e UIApplicationMain + 1160
    25  tipApp                              0x00001a8c main + 102
    26  tipApp                              0x00001a1d start + 53
)
terminate called after throwing an instance of 'NSException'
  • Обратите вниманиепроисходит только когда я запускаю программу, все строки равны нулю, и я нажимаю все кнопки на сегментированном элементе управления

Я просто не совсем уверен, что здесь происходит

1 Ответ

1 голос
/ 25 февраля 2011

Вы должны сохранять эти строки и освобождать каждый раз, когда вы переназначаете новое значение.Неважно, статическая ли это переменная или ivar.Применяются те же правила памяти:

[test release];
test = [@"new_value" retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...