目前我正在进入名为"iPhone OS中的内存管理"的冰冷水中.
这是我学到的一条规则:
每次我在我的方法中看到一个alloc时,我都会在方法的底部发布相应的变量.
每次我在我的头文件中创建一个@property(...)表示复制或保留时,我将该变量的释放消息放入dealloc方法.
每次我有IBOutlet,我都会做同样的事情.唯一例外:如果IBOutlet具有类似@property(... assign)的内容,或者换句话说:如果它具有assign关键字.然后我不关心在dealloc方法中释放它.
我觉得还有很多好的规则要知道!记下你的所作所为.让我们一起刮掉它们.也欢迎链接到精彩的描述.
我是objective-c的新手,需要扩展一个带有实例变量和访问器的框架的标准类.我听说这是用一个所谓的"类别"完成的,这对我来说听起来很混乱.这基本上如何工作?
我有一台来自我公司的服务器。该服务器上未安装 git (并且在不久的将来也不会安装)。(在许多免费服务器托管网站上,也没有安装 git)
有没有办法在不安装 git 的情况下使用 git 二进制文件(因此不需要另一个文件夹中所需的依赖项,独立)?
另一个服务器对我来说是没有选择的。
我想要 git 作为 Web git 存储库查看器,这当然需要 git 二进制文件在任何文件夹中工作,也许有一个带有集成 git 二进制文件的 Web git 存储库查看器。
我试过:
服务器操作系统是linux 64位。我已将 git 二进制文件从本地 linux 复制到服务器上的可执行路径。它不起作用。所以我查找依赖关系。需要这些库:
它们只是指向名为的库的链接:
所以我重命名了这些库并将它们复制到 git 二进制文件所在的服务器。但不幸的是,git 二进制文件在 /lib/linux-64-gnu...os 文件夹中查找库,而不是在同一文件夹中。我不知道接下来要尝试什么。
它做了什么,尤其是##?
#define CUSTOM_ARRAY_INTERFACE(classname) \
@interface classname ## Array : ConcreteMutableArray \
- (void) add:(classname*)obj;\
- (classname*) get:(int)index;\
@end\
Run Code Online (Sandbox Code Playgroud)
CUSTOM_ARRAY_INTERFACE(NSString)然后产生什么,我的这个想法甚至不起作用
@interface NSString ## Array : ConcreteMutableArray
- (void) add:(classname*)obj;
- (classname*) get:(int)index;
@end
Run Code Online (Sandbox Code Playgroud)
?
iOS 7如果我的应用程序最初支持两种方向,如何强制纵向方向?
我在我的应用程序中添加了存折,当系统是iOS6.0时它可以正常工作。当系统是iOS7.1时它出现错误。

我检查代码发现
PKPass *newPass = [[PKPass alloc] initWithData:passData error:&error];
Run Code Online (Sandbox Code Playgroud)
在iOS6.0中生成PKPass时得到一个正确的PKPass,当系统是iOS7.1时得到一个nil。
错误包含消息是:
错误域=PKPassKitErrorDomain 代码=1“无法读取通行证,因为它无效。” UserInfo=0x175cd2f0 {NSUnderlyingError=0x175c2c10 “不止一个字段有键 'phone'。字段键必须是唯一的。”, NSLocalizedDescription=无法读取通行证,因为它无效。}
存折的数据我从服务器上得到的。代码如下
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.connectionData appendData:data];
}
Run Code Online (Sandbox Code Playgroud)
将数据写入文件后,代码如下:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString* filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"pk.pkpass"];
if ([self.connectionData writeToFile:filePath atomically:YES]) {
if (![PKPassLibrary isPassLibraryAvailable]) {
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error"
message:@"PassKit not available"
delegate:nil
cancelButtonTitle:@"Pitty"
otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
}
Run Code Online (Sandbox Code Playgroud)
写入文件后我想显示它,代码如下:
NSString* passFile = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) objectAtIndex:0] stringByAppendingPathComponent:name];
NSString * newPassStr = [[NSString alloc] initWithContentsOfFile:passFile encoding:NSUTF8StringEncoding error:nil]; …Run Code Online (Sandbox Code Playgroud) 我正在根据Swift编程指南中的示例,将未命名的函数作为参数传递,并且我正在使用它来练习.
所以我们有一个Ints 数组:
var numbers: Int[] = [1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我应用这样的变换:(7)
func transformNumber(number: Int) -> Int {
let result = number * 3
return result
}
numbers = numbers.map(transformNumber)
Run Code Online (Sandbox Code Playgroud)
等于:(7)
numbers = numbers.map({(number: Int) -> Int in
let result = number * 3
return result;
})
Run Code Online (Sandbox Code Playgroud)
等于:(8)
numbers = numbers.map({number in number * 3})
Run Code Online (Sandbox Code Playgroud)
等于:(8)
numbers = numbers.map({$0 * 3})
Run Code Online (Sandbox Code Playgroud)
等于:(8)
numbers = numbers.map() {$0 * 3}
Run Code Online (Sandbox Code Playgroud)
正如您在下图中所看到的,操场侧栏中的迭代计数显示,在函数声明的最远抽象中,它具有8个计数.

为什么它显示为最后两个示例的8次迭代?
我想以编程方式使用Apple的新Swift语言从viewController移动到另一个.我用Google搜索并阅读了文档,我看到了如何使用单个ViewController.有没有人有关于如何在视图控制器之间切换的示例或文档?
作为练习,我正在使用Swift重写我的一个应用程序.
在Objective-C中,我有以下代码行:
NSRange extendedRange = NSUnionRange(range, [[self.backingStore string]lineRangeForRange:NSMakeRange(NSMaxRange(range), 0)]);
Run Code Online (Sandbox Code Playgroud)
在swift中它看起来像这样:
let str = backingStore.string
let extendedRange: NSRange = NSUnionRange(range, str.lineRangeForRange(NSMakeRange(NSMaxRange(range), 0)))
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,我得到'Int'与'String.Index'不同,我无法弄清楚为什么.任何帮助/见解将不胜感激.
如果我桥接我的字符串,它的工作原理:
let str = backingStore.string
let extendedRange: NSRange = NSUnionRange(range, str.bridgeToObjectiveC().lineRangeForRange(NSMakeRange(NSMaxRange(range), 0)))
Run Code Online (Sandbox Code Playgroud) 我收到错误消息:
前缀/后缀'='是保留的
对于以下简单的快速.
var c=0,a=2,b=4
c= a+b
Run Code Online (Sandbox Code Playgroud)
知道我为什么会收到这个错误吗?