如何在Swift中获取类实例ID?

时间:2018-03-14 23:07:33

标签: swift

在Objective-C中,我将使用以下代码来识别类的实例以及在控制台中调用的函数。

NSLog(@"[DMLOG - %@] %@", NSStringFromSelector(_cmd), self);

这会返回类似下面的控制台,我将获得一个实例ID来跟踪对象的不同实例。

[DMLOG - prepForInput] <GridBase: 0x7fb71860a190>

如何同时获取实例ID和Swift中调用的函数?我已尝试以下方法在Swift中获取ID但它只提供类名而没有实例ID值?任何建议将不胜感激。

print("[DBG] Init: \(self)")

2 个答案:

答案 0 :(得分:4)

要获取当前函数名称,请使用NSObject文字。

对于实例ID,看起来您有两个选择:

  1. class MyClass: NSObject { override init() { super.init() print("[DBG: \(#function)]: \(self)") } } 继承(UIKit类无论如何继承它),以便类实例具有实例ID:

    NSObject
  2. 如果您的班级没有从class Jumbo { init() { print("[DBG: \(#function)]: \(Unmanaged.passUnretained(self).toOpaque())") } } 继承,您仍然可以通过内存地址识别您的实例:

    public ActionResult LoginConfirmed(int id)
            {
                UserHomeVM Model = new UserHomeVM();
                data = new TempDB();
                InitializeTestData a = new InitializeTestData();
                data = a.PrepareData(data);
                Model.Blogs = new List<Blogs>();
                Model.Users = new List<Users>();
                Model.Users = data.Users
                    .Where(b => b.Id != id)
                    .ToList();
                foreach (Blogs b in data.Blogs)
                {
                    if (b.UserID != id)
                    {
                        Model.Blogs.Add(b);
                    }
                }
                return View("Home", Model);
            }
    

答案 1 :(得分:0)

我刚刚使用以下方法进行了快速测试:

print("\(self) \(#function) - Count \(count)")

我得到了以下结果:

<XXXXXXX.FeedViewController: 0x7fcebdf05d40> viewWillAppear - Count 3

我会尝试一下,看看它是否有帮助。