Selector in objective c

來源:互聯網
上載者:User

Quoted from http://www.roseindia.net/tutorial/iphone/examples/iphone-selector.html

Selector in Objective C
In short, Selector can either be a name of method or a message to an object when used in the source code. And SEL is the complied form of a Selector. Also remember that all methods with the same name have the same selector. We can also use use selector to invoke a method on object.

Let's find out the Iphone selector syntax given below..

selectorAppDelegate.h

#import <UIKit/UIKit.h>@interface selectorAppDelegate : NSObject <UIApplicationDelegate> {UIWindow *window;NSString *string;}@property (nonatomic, retain) IBOutlet UIWindow *window;@property (nonatomic, retain) NSString *string;@end

selectorAppDelegate.m

#import "selectorAppDelegate.h"@implementation selectorAppDelegate@synthesize window, string;- (void)applicationDidFinishLaunching:(UIApplication *)application {       // Override point for customization after application launch    [window makeKeyAndVisible];    NSString *str = @"HELLO, THIS IS NEELAM";        SEL sel = @selector(lowercaseString);    NSString *lower = (([str respondsToSelector:sel]) ? @"YES" : @"NO");    NSLog (@"Responds to lowercaseString: %@", lower);    if ([str respondsToSelector:sel]) //(lower == @"YES")        NSLog(@"lowercaseString is: %@"  , [str lowercaseString]);    }- (void)dealloc {    [window release];    [super dealloc];}@end

As you can see in the code, SEL is the complied form of @Selector. A selector can be written as

SEL sel = @selector(lowercaseString);

lowercaseString will change all the uppercase string into the lower case.

On running the application it'll look like as given image:

 

Quoted from http://stackoverflow.com/questions/738622/selectors-in-objective-c

You have to be very careful about the method names. In this case, the method name is just "lowercaseString", not "lowercaseString:" (note the absence of the colon). That's why you're getting NO returned, because NSString objects respond to the lowercaseString message but not the lowercaseString: message.

How do you know when to add a colon? You add a colon to the message name if you would add a colon when calling it, which happens if it takes one argument. If it takes zero arguments (as is the case withlowercaseString), then there is no colon. If it takes more than one argument, you have to add the extra argument names along with their colons, as in compare:options:range:locale:.

You can also look at the documentation and note the presence or absence of a trailing colon.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.