小编Eth*_*n G的帖子

文本视图和图像视图从Xcode 6.1故事板中的视图控制器中消失

我更新到Xcode 6.1来修复我使用Interface Builder Cocoa Touch Tool时出现的错误,当我使用故事板时,它会占用99%的CPU,这会冻结Xcode.既然错误得到解决,我可能会遇到更令人沮丧的错误.

当我使用故事板时,我正在处理一个UIViewController,我的UITextView,我的自定义UITextViews(它们是UITextView故事板中的所有意图和目的的子类,它们都是UITextViews),然后我UIImageView突然消失了!

以下是我的视图控制器中的默认主视图现在的样子:

主视图

  • 视图
    • 活动指标
  • 滚动视图
    • 标签
    • 文本视图(x = 0,y = -65,宽度= 0,高度= 0)错误!
    • 标签
    • 自定义文本视图(x = 0,y = -65,宽度= 0,高度= 0)错误!
    • 标签
    • 自定义文本视图(x = 0,y = -65,宽度= 0,高度= 0)错误!
    • 标签
    • 自定义文本视图(x = 0,y = -65,宽度= 0,高度= 0)错误!
    • 标签
    • 标签
    • 自定义文本视图
    • 视图
      • 视图
        • 标签
        • 按键
      • 图像视图(x = 0,y = 0,宽度= 0,高度= 0)错误! …

uitextview uiimageview xcode-storyboard xcode6 ios8

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

Xcode无法启动应用程序.流程启动失败:4294967295

我正在Xcode 6.0.1中开发一个iOS 8应用程序并在我的iPhone 5上运行它(其上有iOS 8.0.2).在我更新到iOS 8.0.1和Xcode 6.0.1之前,我从来没有得到过我得到的错误.但是,现在,有时当我尝试将我的应用程序从Xcode运行到我的iPhone时,此错误消息从Xcode窗口的顶部弹出:

Could not launch "[app name]". Process launch failed: 4294967295
Run Code Online (Sandbox Code Playgroud)

看来这个错误只发生在我第一次将应用程序从Xcode运行到我的设备上时(即如果我在Xcode中关闭错误消息,但我没有关闭手机上的应用程序 - 所以应用程序仍然在我的手机上 - 当我在Xcode中再次单击运行按钮时,我没有收到此错误.但是,似乎并没有很多一致性,因为有时即使我第一次将应用程序从Xcode启动到我的手机上,错误消息也不会下降(即,没有应用程序已经在我的手机上).

另外,我尝试了几种解决方案,其中没有一种解决方案完全修复了错误:

  1. 清理构建,清除DerivedData,重新启动我的mac,然后重新打开Xcode.
  2. 在接受新的iOS 8.0许可协议后,从Apple获取应用程序的新证书.
  3. 确保在我安装第三方Cocoa pod时,Podfile指定iOS 8.0平台.
  4. 设置应用程序的部署目标并构建iOS 8.0的设置

即使在尝试上述解决方案尝试之后,我似乎也无法弄清楚如何使此错误始终保持不变.同样,我仍然可以在我的手机上正常运行应用程序,但每次运行它都会在Xcode中显示奇怪的错误消息,并且只在我的手机上打开应用程序,但不会将其与Xcode链接(用于控制台输出等) .

任何帮助将非常感激.谢谢!

iphone xcode objective-c ios

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

UITextView selectAll方法无法按预期工作

我正在为我的iPhone 5(其上有iOS 8.0.2)创建一个带有Xcode 6.0.1的iOS 8应用程序.我想这样做,以便当用户点击我时UITextView,所有文本都被选中,这样他就可以轻松地开始输入并删除那里的内容(但我不希望文本被自动删除,因为用户可能想要保留它或附加到它).为此,我有以下代码:

- (void)textViewDidBeginEditing:(UITextView *)textView {
    if ([textView hasText]) {
        NSLog(@"selectedRange before: %d", textView.selectedRange.length);
        [textView selectAll:self];
        NSLog(@"selectedRange after: %d", textView.selectedRange.length);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用此方法时,控制台输出是我所期望的(即selectedRange长度与textView文本中的字符数相同).但是,没有任何内容显示为选中,UITextView并且它不会被选中(即没有选择菜单弹出).

我在互联网上看到过这样的多个问题,但是所提供的解决方案都没有为我工作(其中一些解决了它作为一个错误而没有提供任何解决方案).将发件人ID更改为self(例如nil)之外的其他内容没有帮助,也没有帮助[textView select:self]按照一个人的建议进行呼叫.我也试过这段代码:

- (void)textViewDidBeginEditing:(UITextView *)textView {
    if ([textView hasText]) {
        UITextRange *range = [textView textRangeFromPosition:textView.beginningOfDocument toPosition:textView.endOfDocument];
        [textView setSelectedTextRange:range];
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它有同样的问题.

有什么建议?

selectall objective-c uitextview ios

10
推荐指数
3
解决办法
3764
查看次数

转换为Swift 3重命名了我自己的Objective-C方法

我有快速的类与我的Objective-C代码混合在一起.使用Swift 2.3,一切都很好并按预期工作.

我最近转换为Swift 3,它更新了几个API调用,因为Swift 3发生了所有重命名.这很好; 我明白了.

但是什么不好,Swift 3似乎已经在我的一个Objective-C类中重命名了一个方法.我拥有Objective-C类,并且调用了我想要的方法:readDeliveryInfoItems.但现在,在转换为Swift 3后,我无法.readDeliveryInfoItems()再在Swift类中调用了.它告诉我它已被重命名为.readItems().

这是没有意义的.Objective-C类仍然调用该方法readDeliveryInfoItems,因此这里有一些内容.

我已经尝试将Objective-C readDeliveryInfoItems方法重命名为readDeliveryInfo,构建(Swift失败,因为它表示该readInfo()方法不存在,这很好),然后将方法重命名为readDeliveryInfoItems.但是,当我在此之后构建时,Swift会重新思考调用该方法readInfo().我希望这会欺骗Xcode刷新Swift桥接并将方法重命名为正确的名称readDeliveryInfoItems(),但事实并非如此.

我怎样才能解决这个问题?

更新以添加更多信息

我的Objective-C类的接口有这个函数声明:

- (nullable NSArray<XMPPDeliveryInfoItem *> *)readDeliveryInfoItems;
Run Code Online (Sandbox Code Playgroud)

但是在该类的生成接口(参见下面的MartinR的注释)中,函数声明就是:

open func readItems() -> [XMPPDeliveryInfoItem]?
Run Code Online (Sandbox Code Playgroud)

该类中还有与该readDeliveryInfoItems函数类似的其他函数,例如:

- (nullable NSArray<XMPPDeliveryInfoItem *> *)sentDeliveryInfoItems;
Run Code Online (Sandbox Code Playgroud)

它们在生成的界面中看起来正确:

open func sentDeliveryInfoItems() -> [XMPPDeliveryInfoItem]?
Run Code Online (Sandbox Code Playgroud)

所以我无法弄清楚为什么我只用一个函数来解决这个问题.

objective-c swift swift3

9
推荐指数
1
解决办法
3136
查看次数

tsmockito - 如何模拟采用 lambda 参数的函数

我有一个接受 lambda 的函数(并且 lambda 也接受一个参数)。我如何模拟该功能?

在下面的示例中,我试图模拟connection.xmppStanzas

示例类:

type Matcher<T> = (t: T) => boolean;

const myMatcher: Matcher<Element> = (id: string) => ...;

class SomeClass {
    constructor(private readonly idSource: IdSource,
                private readonly connection: XmppConnection) {}

    doSomething() {
        const id = this.idSource.getId();
        this.connection.xmppStanzas(myMatcher(id)).pipe(
            ...do something with the stanza
        );
    }

}
Run Code Online (Sandbox Code Playgroud)

测试SomeClass

describe('SomeClass', () => {
    let idSource: IdSource;
    let connection: XmppConnection;
    let instance: SomeClass;

    beforeEach(() => {
        idSource = mock(idSource);
        connection = mock(XmppConnection);

        instance = new SomeClass( …
Run Code Online (Sandbox Code Playgroud)

mocking typescript ts-mockito

5
推荐指数
0
解决办法
622
查看次数