什么是取代自我的最佳方式

时间:2013-03-22 05:15:49

标签: iphone ios objective-c xcode self

我有这个代码效果很好,但出于好奇,如何在此方法中替换单词self?这是一个导航应用程序btw,并尝试各种方法来替换它。

Viewcontroller1

  [self.navigationController popViewControllerAnimated:YES];

这是我尝试的一种方法,

UIViewController *vc;

    vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil];
    [vc.navigationController popViewControllerAnimated:YES];

3 个答案:

答案 0 :(得分:5)

无法替换self。因为self与JAVA中的keyword this类似keyword

IN SHORT Apple / iOS不会证明任何人都可以更改任何类型的功能。


                                      **EDIT**

来自您的代码:

UIViewController *vc;

    vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil];
    [vc.navigationController popViewControllerAnimated:YES];

创建Viewcontroller1对象并导航到另一个 viewController 以便写为

的最佳方法
Viewcontroller1 *objVC = [[Viewcontroller1 alloc] init]; 
[self.navigationController pushViewController: objVC animated:YES];

答案 1 :(得分:0)

你错误地解释了下面的代码行。

[self.navigationController popViewControllerAnimated:YES];

这一行基本上是做什么的。它确实从viewController表单中删除了当前的NavigationViewControlelr(即self.navitionController)Stack

stack--基本上当您在viewController中创建任何view ControllernavigationController时,navigation controller根据{{1}添加viewController或者可以说管理Stack

关于您的以下代码行

ViewController in stack's Way

为什么你要创建从NavigationViewController中删除的ViewController。它会带来内存开销

并关于替换 UIViewController *vc; vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil]; [vc.navigationController popViewControllerAnimated:YES]; 。你不能将self替换为上面讲述的“iPatel”。

答案 2 :(得分:0)

当您说要将self替换为“某个对象或某物”时,self 是一个对象。单词self指的是函数所在类的当前实例。您不能替换self,因为那样您就不会引用UIViewController子类的当前实例。

为什么你的例子不起作用:

UIViewController *vc;

    vc = [[Viewcontroller1 alloc] initWithNibName:nil bundle:nil];
    [vc.navigationController popViewControllerAnimated:YES];

是因为它引用了Viewcontroller1类的新实例。弹出窗口不会出现,因为您没有将它添加到当前的viewcontroller;您将它添加到另一个从未显示的实例。