Method_exchangeImplementations вызывает ошибку EXC_BAD_ACCESSIOS

Программируем под IOS
Ответить
Anonymous
 Method_exchangeImplementations вызывает ошибку EXC_BAD_ACCESS

Сообщение Anonymous »

Я пытался проверить, как будет вести себя метод_exchangeImplementations в различных ситуациях. Когда я попробовал выполнить следующий код, я получил ошибку EXC_BAD_ACCESS. Я не знаю, почему программа завершилась с этой ошибкой. Вот код моего проекта:


< pre class="snippet-code-js lang-js Prettyprint-override">

Код: Выделить всё

#import "ViewController.h"
#import 

@interface Person : NSObject
@end

@implementation Person

- (void)say{
NSLog(@"Person");
}

@end

@interface Student : Person
@end

@implementation Student

- (NSString *)say {
return nil;
}

@end

@interface Doctor : Person

@end

@implementation Doctor

@end

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
Student *stu =[Student new];
Doctor *dr = [Doctor new];
Person *person = [Person new];
Method studentMethod = class_getInstanceMethod([Student class], @selector(say));
Method doctorMethod = class_getInstanceMethod([Doctor class], @selector(say));

[stu say];
[dr say];
method_exchangeImplementations(studentMethod, doctorMethod);

[stu say];
[dr say];
[person say];
}

@end



Я должен упомянуть одну вещь: -say метод в классе Student. Возвращаемое значение метода Say — NSString *. Я не знаю, допустимо ли иметь переопределяющий метод, написанный с другим типом возвращаемого значения. По крайней мере, компилятор не мешал мне это сделать, возможно, он все еще считает это обычным переопределением.

Может ли кто-нибудь помочь мне избавиться от этой ошибки? ? Пожалуйста, объясните, почему компилятор также допускает переопределение с другим типом возвращаемого значения. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/342 ... cess-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»