小编Zhu*_*gqi的帖子

如何更改默认的python版本?

我在我的mac中安装了python 3.2.在运行/ Applications/Python 3.2/Update Shell Profile.command之后,令人困惑的是,当我在终端中键入python -V时它说的是Python 2.6.1,如何更改默认的python版本?

python macos

90
推荐指数
8
解决办法
28万
查看次数

NSPersistentContainer的loadPersistentStores的completionHandler是否同步运行?

在Apple的NSPersistentContainer文档中,该方法具有以下描述:

func loadPersistentStores(completionHandler block: @escaping (NSPersistentStoreDescription, Error?) -> Void)


block:  Once the loading of the persistent stores has completed, this block will be executed on the calling thread.
Run Code Online (Sandbox Code Playgroud)

但经过多次调试堆栈跟踪,我很确定completionHandler是同步执行的.如果我在调用loadPersistentStores后放置一个print语句,它总是在执行completionHandler之后打印.

那么,我应该考虑何时loadPersistentStores返回,NSPersistentContainer已经加载(无论是否成功)?

core-data ios

12
推荐指数
1
解决办法
1172
查看次数

为什么Objective C对象的isa字段与其类指针有1个偏移量?

我正在尝试使用以下代码来理解NSObject的C结构布局.首先,我使用NSData打印其结构布局,然后直接使用打印类指针[NSObject class].

id obj = [NSObject new];
long nsSize = class_getInstanceSize([NSObject class]);
NSData *nsData = [NSData dataWithBytes:(__bridge const void *)obj length:nsSize];
NSLog(@"obj: %@", nsData);
NSLog(@"NSObject Class: %p", [NSObject class]);
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

2015-10-15 08:11:53.913 ObjC_CMD[11406:1999149] obj: <f1e06573 ffff1d00>
2015-10-15 08:11:53.913 ObjC_CMD[11406:1999149] NSObject Class: 0x7fff7365e0f0
Run Code Online (Sandbox Code Playgroud)

有趣的是类指针的结尾是e0f0,而NSData打印结果显示它的isa为eof1(由于小端,它的顺序相反).我在书中读到isa指针在对象的结构布局中是最顶层的,那么为什么它有1个偏移

顺便说一句,我也试过其他类型的对象,isa和类指针之间总有1个偏移量.它们不应该是一样的吗?

PS我刚注意到类指针以0x7fff开头,但C struct中的isa似乎是0xffff,这种差异也很有趣.isa字段和类指针之间的确切关系是[NSObject class]什么?

c struct pointers objective-c objective-c-runtime

8
推荐指数
1
解决办法
233
查看次数

为什么默认的UIWindowSceneDelegate类继承自UIResponder?

在 iOS 13 中,该UIWindowSceneDelegate对象不在响应者链中(我通过打印响应者链验证了这一点)。但Xcode提供的模板代码使场景委托类继承自UIResponder. 如果我使场景委托类继承自NSObject,代码仍然可以毫无问题地编译和运行。

那么让场景委托类符合 的意义何在呢UIResponder

ios ios13 ipados

8
推荐指数
1
解决办法
923
查看次数

如何检查UITextField中的视线外的字符?

UITextField当用户输入文本时,我有一个收缩和扩展.如果文本字段的宽度达到屏幕宽度,我希望它是右对齐的,这样用户就可以看到最后输入的字符.在其他情况下,我希望它是左对齐的.

因为文本字段的最大宽度与屏幕不完全相同,所以我需要找到一种方法来检查它是否有可见区域以外的字符.

反正有没有实现这个目标?

objective-c uitextfield ios

7
推荐指数
1
解决办法
78
查看次数

当Swift中的函数签名不同时,为什么UnsafeRawPointer会显示不同的结果?

下面的代码可以在Swift Playground中运行:

import UIKit

func aaa(_ key: UnsafeRawPointer!, _ value: Any! = nil) {
    print(key)
}
func bbb(_ key: UnsafeRawPointer!) {
    print(key)
}
class A {
    var key = "aaa"
}
let a = A()
aaa(&a.key)
bbb(&a.key)
Run Code Online (Sandbox Code Playgroud)

这是我的mac上打印的结果:

0x00007fff5dce9248
0x00007fff5dce9220
Run Code Online (Sandbox Code Playgroud)

为什么两个打印的结果不同?更有趣的是,当我更改bbb的功能签名以使其与aaa相同时,两次打印的结果是相同的.如果我在这两个函数调用中使用全局var而不是a.key,则两次打印的结果是相同的.有谁知道为什么会发生这种奇怪的行为?

swift

7
推荐指数
1
解决办法
345
查看次数

当用户在切换器中关闭窗口时不调用sceneDidDisconnect(_:)

我在 Apple 的Supporting Multiple Windows on iPad示例代码中添加了sceneDidDisconnect(_:)委托方法(可以在 Xcode 文档窗口中下载)。但是当我运行应用程序并打开多个窗口时,当任何窗口关闭时都不会调用此方法。我应该做点别的吗?SceneDelegate

ios ios13 ipados

6
推荐指数
0
解决办法
290
查看次数

如何从Swift中的可选类型获取未包装的类型?

我正在尝试从运行时的可选类型中获取未包装的类型。以下代码将显示a的类型Optional<String>

class MySubClass: MyClass {

    var a: String? = nil
}

var a = MySubClass()

let mirror = Mirror(reflecting: a)
for child in mirror.children {
    print(child.value.dynamicType)
}
Run Code Online (Sandbox Code Playgroud)

现在,我想解开类型并获取String,我应该怎么做才能在运行时做到这一点?

swift swift2

5
推荐指数
2
解决办法
2521
查看次数

使用scrollRangeToVisible()时,UITextView始终从头开始滚动

我正在调试一个UITextView记录我操作的东西.

例如,如果我按下屏幕上的一个特殊按钮,这UITextView将显示我刚按下的按钮.当我按下更多按钮时它会记录更多,所以我可以轻松滚动UITextView查看我过去的操作.

因为UITextView本身不会随着文本的增加而滚动,所以当尝试登录时,我会尝试滚动到最后一行.我尝试使用下面的scrollRangeToVisible()方法

history.scrollRangeToVisible(NSMakeRange(count(history.text!) - 1, 1))
Run Code Online (Sandbox Code Playgroud)

历史是一个UITextView出路.

问题是,这种方法总是使得UITextView从头开始滚动到指定NSRange.更具体地说,它会将视图重置为文本的开头,然后向下滚动到任何NSRange位置.我希望它scroll直接下来,

有人能解决这个问题吗?非常感谢.

uiscrollview uitextview ios

4
推荐指数
1
解决办法
1732
查看次数

strndup有什么问题?

我正在使用flex编写解析器.我使用的是Mac OS X 10.6.7.我已经包含这样的头文件:

#include "string.h"
#include "stdlib.h"
Run Code Online (Sandbox Code Playgroud)

但它说

Undefined symbols for architecture x86_64:
  "_strndup", referenced from:
      _yylex in ccl2332A.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

为什么?

c macos flex-lexer

3
推荐指数
1
解决办法
1万
查看次数