Prince Kumar Sharma
Prince Kumar Sharma

Reputation: 12641

How to pass direct string as parameter in objc_msgSend()?

I am trying to make a simple example using c in ios.And I have written following code to present a view.It is working fine.But the problem is that I want to pass direct text to set in to the UILabel of which I have created object.

BOOL AppDel_didFinishLaunching(struct AppDel *self, SEL _cmd, void *application, void *options)
{
    self->window = objc_msgSend(objc_getClass("UIWindow"), sel_getUid("alloc"));
    self->window = objc_msgSend(self->window, sel_getUid("initWithFrame:"), (struct CGRect) { 0, 0, 320, 480 });

    id viewController = objc_msgSend(objc_msgSend(objc_getClass("UIViewController"), sel_getUid("alloc")), sel_getUid("init"));

    id view = objc_msgSend(objc_msgSend(objc_getClass("View"), sel_getUid("alloc")), sel_getUid("initWithFrame:"), (struct CGRect) { 0, 0, 320, 480 });

    id label=objc_msgSend(objc_msgSend(objc_getClass("UILabel"), sel_getUid("alloc")), sel_getUid("initWithFrame:"),(struct CGRect){20,20,200,30});
    objc_msgSend(label, sel_getUid("setBackgroundColor:"),objc_msgSend(objc_getClass("UIColor"), sel_getUid("greenColor")));

    objc_msgSend(label, sel_getUid("setText:"),?); //here how to set text by direct string?

    objc_msgSend(view, sel_getUid("addSubview:"),label);
    objc_msgSend(objc_msgSend(viewController, sel_getUid("view")), sel_getUid("addSubview:"), view);
    objc_msgSend(self->window, sel_getUid("setRootViewController:"), viewController);
    objc_msgSend(self->window, sel_getUid("makeKeyAndVisible"));

    return YES;
}

objc_msgSend(label, sel_getUid("setText:"),?); //In this line i have to pass string.

have u any idea? Thanks!.

Upvotes: 0

Views: 502

Answers (1)

Inder Kumar Rathore
Inder Kumar Rathore

Reputation: 39988

objc_msgSend(label, sel_getUid("setText:"),CFSTR("This is my string."));

Upvotes: 1

Related Questions