Kuzatuv tekshiruvi/sababi EXC_BAD_ACCESSga ruxsat berilmaydi

Menimcha, bu g'alati, biroq kod boshqa dasturda men uchun juda yaxshi ishlagan. Shuning uchun men o'zimning funktsiyani iphone app delegatida ustun qilaman,

       * .appdelegate_iPhone.h *
        @interface AppDelegate_iPhone : AppDelegate 
        {

        }

        @end

    * .appdelegate_iPhone.m *
........

        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
          LoginViewController_iPhone * login_view = [[LoginViewController_iPhone alloc] initWithNibName:@"LoginViewController_iPhone" bundle:nil];
                [super.window addSubview:login_view.view];
                [super.window makeKeyAndVisible];
               //[login_view release];


           //Override point for customization after application launch.
            [self.window makeKeyAndVisible];
            return YES;

        }
......
@end

Buni ko'rib chiqayapman, chunki men login_viewni ozod qilishni izohladim, chunki ob'ektni tark qilmasam va uni ozod qilsam, keyinchalik hech qanday IBoutlet UIFieldni nazorat qila olmayman.

Men login_view-ni chiqarib, UITextField.text dan foydalanishga harakat qilsam, eks_bad_access xatosi olaman

0
Login_view ni qaerga boshlaysiz?
qo'shib qo'ydi muallif JBRWilkinson, manba
LoginViewController_iPhone * login_view = [[LoginViewController_iPhone alloc] initWithNibName: @ "LoginViewController_iPhone" bundle: nil]; , bir xil xato beradi.
qo'shib qo'ydi muallif Amrit, manba

2 javoblar

Birinchidan, o'rnatilgan andozalar va uning nib faylini ishlatish, odatda, bularning barchasini osonroq qiladi va men uni shu tarzda qurishga harakat qilishni tavsiya qilaman. Ya'ni, nima sodir bo'layotganini ko'rib chiqaylik.

Siz nuqtai nazari yaratmoqdasiz, keyin uning ko'rinishini olib, uni oynaga qo'yasiz. Keyinchalik to'g'ri taqsimlaydigan ko'rinadigan nazorat moslamasini tashlaysiz. UITextField.text deb nomlanadigan joyni bilmayman, lekin bu usul tugashi bilan ko'rish tekshiruvi o'chirilishi kerak. Agar siz nuqtai nazarni tekshirgichni ushlab turishni istasangiz, uni ivarga qo'yishingiz kerak.

@Cyupa qaydlaridek, bu erda super.window dan foydalanmaslik kerak. Siz self.window dan foydalanishingiz kerak, garchi siz buning o'rniga, shablonlardan birini qo'llashingiz kerak.

0
qo'shib qo'ydi
Bu sinf o'zida self.window emas, balki super.window dan foydalanishni yaxshiroq tushuntirish uchun kodni yangiladim, chunki u sinfda UIWindow mavjud emas. IPhone va iPad uchun universal appdelegate bo'lgan Super-class (appDelegate) UIWindowga ega, bu iPhone_delegate sinfidan qo'ng'iroq qilaman.
qo'shib qo'ydi muallif Amrit, manba
Mening LoginViewController shu kodga o'xshaydi code @interface LoginViewController_iPhone: UIViewController {IBOutlet UITextField * usernameField; }
qo'shib qo'ydi muallif Amrit, manba

Siz tekshirgichni ishga tushirmadingiz. Ko'rinishni tekshirgich uchun iOS ajratilgan joy, lekin siz uni ishga tushirmadingiz.

LoginViewController_iPhone * login_view  = [[LoginViewController_iPhone alloc] init];

Va nima uchun [super.window addSubview: login_view.view];  emas, balki [window addSubview: login_view.view]; ?

"AppDelegate" dasturining superlig'i "<div style = > NSObject qismida oyna xususiyatiga ega emas.

0
qo'shib qo'ydi
Kirish kodini kiriting: loginViewController_iPhone * login_view = [[LoginViewController_iPhone alloc] initWithNibName: @ "LoginViewController_iPhone" to'plami: nil]; Bundan tashqari, men Universal ilovasi bor, shuning uchun mening ushbu sinf uchun super emas, NSOBject emas, bu iPad va iPhone delegatsiyasida meros qilib olgan asosiy vakil
qo'shib qo'ydi muallif Amrit, manba