ios协议的新成员应该强制您使用方法,但事实并非如此

ios协议的新成员应该强制您使用方法,但事实并非如此,ios,iphone,objective-c,Ios,Iphone,Objective C,虽然没有使用所有方法,但我的应用程序编译良好,以下是我的协议: @protocol azzams_customer_service_delegate <NSObject> -(void)just_make_dice_appear_in_beginning; -(void)generate_magic_numbers; -(void)roll_the_dice; -(void)check_for_snake_eyes; -(void)Check_winning_number;

虽然没有使用所有方法,但我的应用程序编译良好,以下是我的协议:

@protocol azzams_customer_service_delegate <NSObject>


-(void)just_make_dice_appear_in_beginning;
-(void)generate_magic_numbers;
-(void)roll_the_dice;

 -(void)check_for_snake_eyes;
 -(void)Check_winning_number;
 -(void)flash_random_winning_number;
 -(void)update_winning_purse;
@required
-(void)u_need_to_im;

@end

它应该给出一个错误,但我的应用程序编译得很好

该应用程序可以正常编译,但您应该会看到一条警告,说明该方法未实现。

正如其他人所指出的,您将看到一条警告。但是,您可以打开编译器中的“将警告视为错误”选项。当然,这意味着您必须确保您的项目完全没有警告。

这就像-假设类A是协议的委托,它应该实现方法XYZ。在另一个类/方法尝试访问XYZ之前,程序将正常工作。如果它试图访问所需的方法,程序将崩溃


示例:您实现了UiTableViewSourceDelegate,但没有实现所需的方法。但是您没有在viewcontroller中使用tableview。您更安全。

这可能会给您一个警告?当您遵守协议时,问题不在于
@接口
中是否存在方法声明(另一方面,在
@接口
中重新声明所有协议的方法是多余的),而是类@实现中方法的存在。即使这样,它也只会生成编译器警告,并且只会在您实际尝试调用缺少的方法时生成运行时错误。在您的实现文件中是否有您需要的方法?如果是,请对其进行注释并让我知道发生了什么关于
@实现
?但是文档说明它将给出一个错误,而不仅仅是一个警告。我有另一个类,我附加了这个协议,并且我没有实现一个方法,仍然没有错误
@interface ViewController : UIViewController<azzams_customer_service_delegate>


-(void)just_make_dice_appear_in_beginning;
-(void)generate_magic_numbers;
-(void)roll_the_dice;

-(void)check_for_snake_eyes;
-(void)Check_winning_number;
-(void)flash_random_winning_number;
-(void)update_winning_purse;

@end
@required
-(void)u_need_to_im;