来自目标C,您可以objc_setAssociatedObject在两个对象之间调用函数以使它们维护一个引用,如果在运行时您不希望销毁对象直到其引用也被删除,这可能很方便.斯威夫特有什么类似的东西吗?
我曾经在XCode 6.0 DP中使用Swift一段时间,在我现有的项目中使用它.我试图从我的ViewController.swift文件访问MyModel.h(我现有的Objective C Model对象).我想导入
#import "MyModel.h"到我的Swift文件.但我无法找到如何做到这一点.
我刚刚安装了Xcode版本4.3.1,我收到此错误:
找不到libxml/tree.h文件
我也安装了Xcode 4.2,并且在同一项目中我得到了同样的错误.
我已经配置了标题搜索路径,/usr/include/libxml2
我也试过$(SDKROOT) / usr/include/libxml2,但它没有用.
我也把Other Linker Flag放了lxml2
我想知道为什么要调用该文件扩展名nib或xib.
我猜在笔尖中的ib是.Interface Builder
但是n?还是x?任何的想法?
我正在尝试将我的一个项目推送到github,并且我一直收到此错误:
fatal: The current branch master has no upstream branch.
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个.我重新初始化了我的git,重新添加了我的源,删除并重新制作了repo,并重新创建了我的SSH密钥.
我一直在尝试找到一种解决方法来在Objective-C中声明@protected属性,因此只有层次结构中的子类才能访问它们(只读,而不是写入).我读到没有记录的方法这样做,所以我想到了这个解决方法,我想问一下StackOverflow对它的看法.
层次结构顶部的每个自定义类都包含三个类,一个实现和两个接口.我们给它们命名:
ClassA.h
ClassA_protected.h
ClassA.m
Run Code Online (Sandbox Code Playgroud)
那么这个ClassA的任何子类都会像往常一样:
ClassB.h
ClassB.m
Run Code Online (Sandbox Code Playgroud)
首先,我创建了接口ClassA.h,其中我声明了一个受保护的int变量,因此ClassA的任何子类都可以访问它:
@interface ClassA : NSObject{
@protected
int _myProtectedInt;
}
@end
Run Code Online (Sandbox Code Playgroud)
下一步是我正在谈论的解决方法.但是,一旦你阅读它,你会发现它非常直接.我声明了第二个名为ClassA_protected.h的接口,它实际上是ClassA.h 的扩展,允许我们将属性标记为readonly:
#import "ClassA.h"
@interface ClassA ()
@property (nonatomic , readonly) int myProtectedInt;
@end
Run Code Online (Sandbox Code Playgroud)
准备受保护层次结构的最后一步是在ClassA.m中声明它的实现,我们只合成我们的属性:
#import "ClassA_protected.h"
@implementation ClassA
@synthesize myProtectedInt = _ myProtectedInt;
@end
Run Code Online (Sandbox Code Playgroud)
这样,每个需要成为ClassA.h子类的类都将导入ClassA_protected.h.因此,像ClassB.h这样的孩子如下:
#import "ClassA_protected.h"
@interface ClassB : ClassA
@end
Run Code Online (Sandbox Code Playgroud)
以及从ClassB.m的实现中访问此属性的示例:
@implementation ClassB
-(void) method {
//edit protected variable
_myProtectedInt= 1; …Run Code Online (Sandbox Code Playgroud) 我怎样才能将NSString的fisrt字母大写,并删除任何重音?
例如,Àlter,Alter,alter应该成为 Alter.
但是,/lter,)lter,:lter应该仍然是相同的,作为第一个字符是不是字母.
在Xcode中有一种方法可以按字母顺序对Classes文件夹下的文件列表进行排序吗?
我知道我可以拖动它们,但是大量的文件很痛苦.
我很惊讶我无法右键单击该文件夹并说出要排序.
在Objective-C中,可以编写类似的东西:
@property(retain) UIView<Protocol1, Protocol2, ...> *myView;
Run Code Online (Sandbox Code Playgroud)
但是如何在swift中编写这段代码呢?
我已经知道如何使属性符合许多协议,但它不能使用继承:
var myView: ??? protocol<Protocol1, Protocol2, ...>
Run Code Online (Sandbox Code Playgroud)
编辑:
我使用许多UIView子类型UIImageView,UILabel或者其他类型,我需要使用一些UIView属性以及协议中定义的一些方法.在最坏的情况下,我可以UIViewProtocol使用所需的属性创建一个,但我知道在Swift中是否可以声明一个属性/变量,其类型和一些协议符合.
有没有办法找到路径的父目录使用NSFileManager什么?
举这个:
/路径/到/某事
把它变成
/路径/到/