小编git*_*rik的帖子

Objective-C - 只用下划线ivar合成的readonly属性?

如果我理解正确,在Objective-C中,属性会自动与getter和setter合成,实例变量声明为属性名称,并带有下划线prepended(_ivar).

所以,这段代码:

的main.m

#import <Foundation/Foundation.h>
#import "hello.h"

int main(int argc, char *argv[])
{

    @autoreleasepool {

        Hello *hello = [[Hello alloc] init];
        NSLog(@"%@", hello.myString);

        return 0;

    }

}
Run Code Online (Sandbox Code Playgroud)

hello.h

#import <Foundation/Foundation.h>

@interface Hello : NSObject
@property (copy, nonatomic) NSString *myString;
@end
Run Code Online (Sandbox Code Playgroud)

hello.m

#import "hello.h"

@implementation Hello

-(Hello *)init
{

    if (self = [super init]) {
        _myString = @"Hello";
    }

    return self;

}

-(NSString *)myString
{
    return [NSString stringWithFormat:@"%@ %@", _myString, @"World"];
}

@end
Run Code Online (Sandbox Code Playgroud)

可以像这样编译和运行:

bash-3.2$ clang -framework Foundation main.m …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c synthesize

28
推荐指数
1
解决办法
6572
查看次数

RestKit 0.20 - CoreData:错误:无法在NSManagedObject类上调用指定的初始化程序

我遇到了一个新的问题,我似乎无法找到解决方法......这是我的RestKit代码,遵循Twitter核心数据示例:

//
// RESTKIT
//

// restkit object manager
NSString *baseURL = @"http://test1.website.com";
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:baseURL]];

// enable activity indicator
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;

// managed object model
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"AppName" withExtension:@"momd"];
NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
// NSLog(@"managed object model: %@", managedObjectModel);

// managed object store
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
objectManager.managedObjectStore = managedObjectStore;
// NSLog(@"managed object store: %@", managedObjectStore);

// persistent store
NSError *error;
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"AppName.sqlite"];
NSPersistentStore …
Run Code Online (Sandbox Code Playgroud)

objective-c restkit restkit-0.20

19
推荐指数
1
解决办法
6212
查看次数

tmux开放终端失败:不是终端

我有一个shell脚本作为服务启用,以启动多个shell脚本,例如

service started script -> script1, script2 ,script3 
Run Code Online (Sandbox Code Playgroud)

script1应该在tmux窗口中打开一个程序,如果我通过手动启动脚本,它确实可以正常工作./script1.sh,但是当通过服务启动脚本启动时,它没有上述错误:

open terminal failed: not a terminal
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

shell tmux systemd

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

使用python dict更新MongoEngine文档?

是否可以使用python dict更新MongoEngine文档?

例如:

class Pets(EmbeddedDocument):
    name = StringField()

class Person(Document):
    name = StringField()
    address = StringField()
    pets = ListField(EmbeddedDocumentField(Pets))

p = Person()
p.update_with_dict({
    "name": "Hank",
    "address": "Far away",
    "pets": [
        {
            "name": "Scooter"
        }
    ]
})
Run Code Online (Sandbox Code Playgroud)

python mongodb mongoengine

11
推荐指数
4
解决办法
7925
查看次数

如何查看git子模块指向哪个提交

据我所知,如果你在git中添加一个子模块,那么它指向该子模块中的某个提交.

是否有任何方法可以查看子模块指向哪个提交而不检查它?

git git-submodules git-commit

10
推荐指数
4
解决办法
3046
查看次数

使用`delete()`时如何防止django在内存中加载对象?

我有内存问题,因为看起来Django在使用时将对象加载到内存中delete().有没有办法阻止Django这样做?

来自Django文档:

Django需要将对象提取到内存中以发送信号和处理级联.但是,如果没有级联和没有信号,那么Django可能会采用快速路径并删除对象而不会进入内存.对于大型删除,这可能会导致内存使用量大幅减少.执行查询的数量也可以减少.

https://docs.djangoproject.com/en/1.8/ref/models/querysets/#delete

我不使用信号.我在我试图删除的模型上有外键,但我不明白为什么Django需要将对象加载到内存中.它看起来确实如此,因为我的内存随着查询的运行而上升.

sql django django-models

10
推荐指数
2
解决办法
1268
查看次数

整个模型保存后的Django信号

我有一个包含2个ManyToMany字段的Django模型.我想在每次保存时处理模型中的数据.

post_save它保存在之前发送信号ManyToMany的关系,所以我不能使用的.然后你有m2m_changed信号,但由于我有2个ManyToMany字段,我不能确定ManyToMany我应该把信号放在哪个字段上.

ManyToMany在保存所有字段后是否有触发的信号?

python django signals

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

具有强引用的对象属性变为null

dataControllerBWMasterViewController具有强引用的另一个对象(in )上的属性上设置的数组的键变为null.我不明白为什么.

BWMasterViewController

标题:

#import <UIKit/UIKit.h>

@class BWBirdSightingDataController;

@interface BWMasterViewController : UITableViewController
@end
Run Code Online (Sandbox Code Playgroud)

执行:

#import "BWMasterViewController.h"
#import "BWBirdSightingDataController.h"
#import "Bird.h"
#import "BWWebviewController.h"

@interface BWMasterViewController()
@property (strong, nonatomic) BWBirdSightingDataController *dataController;
@property (copy, nonatomic) NSString *test;
@end

@implementation BWMasterViewController

- (void)awakeFromNib
{

    [super awakeFromNib];

    NSLog(@"awake from nib");
    self.dataController = [[BWBirdSightingDataController alloc] init];
    self.test = @"Test var";

    NSLog(@"test: %@", self.test);
    Bird *bird = [self.dataController objectInListAtIndex:0];
    NSLog(@"bird object: %@", bird);
    NSLog(@"bird name: %@", bird.name)

}

- (void)viewDidLoad
{

    [super …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch core-data objective-c ios

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

将预定义的HTML连接到Backbone中的模型和视图

我开始使用Backbone.js,所以我必须说我对这些概念还不是很熟悉.

我有预定义的HTML,我想使用Backbone来管理它.这很重要,我希望保持这样.

说这是我的HTML(的一部分):

<div class="pig" data-id="1">
    <h1>Harry</h1>
    <input type="text" value="Harry">
</div>
<div class="pig" data-id="2">
    <h1>Jill</h1>
    <input type="text" value="Jill">
</div>
<div class="pig" data-id="3">
    <h1>Bob</h1>
    <input type="text" value="Bob">
</div>
Run Code Online (Sandbox Code Playgroud)

现在的想法是,当你更改输入时,这应该更新我的Backbone模型并渲染视图,从而导致h1使用新名称进行更新.我不确定如何设置我的模型和视图.

我有我的模型和我的观点的结构,但我不知道我应该如何使用它们.

目前我有这样的事情:

var PigModel = Backbone.Model.extend()
var pigs = new PigModel()
pigs.reset([
    {"id": "1", "name": "Harry"},
    {"id": "2", "name": "Jill"},
    {"id": "3", "name": "Bob"}
])

var PigView = Backbone.View.extend({
    el: '.pig',
    events: {
        'change input': function() {
            // update appropriate Model ?
            this.render()
        }
    },
    render: function() {

        var new_name …
Run Code Online (Sandbox Code Playgroud)

html javascript backbone.js

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

在Gulp中基于正则表达式重命名文件

假设我有一个像这样的LESS CSS目录结构:

less/
    core/
        _main.less
        header.less
        body.less
        footer.less
    contact/
        _main.less
        form.less
        details.less
Run Code Online (Sandbox Code Playgroud)

我想编写一个Gulp任务,它将_main.lessless/dir的每个子目录中查找文件,将其传递给gulp-less并将输出写入css/dir,如下所示:

css/
    core.css
    contact.css
Run Code Online (Sandbox Code Playgroud)

因为_main.less包含其目录中的其他文件,只_main.less需要解析文件,但我希望输出文件具有其所在目录的名称.

到目前为止我有这个:

gulp.src('less/*/*/_main.less')
    .pipe(less())
    .pipe(gulp.dest('css'));
Run Code Online (Sandbox Code Playgroud)

但是这将创建一个这样的目录结构:

css/
    core/
        _main.css
    contact/
        _main.css
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.我正在考虑使用正则表达式匹配目录名称,将其返回到matchesvar中,并相应地重命名该文件.像这样的东西:

gulp.src(/less\/[^\/]+\/([^\/]+)\/_main.less/)
    .pipe(less())
    .pipe(rename(function(context) {
        context.src.matches[1] + '.css'
     }))
    .pipe(gulp.dest('css'));
Run Code Online (Sandbox Code Playgroud)

这段代码只是一个例子.我无法弄清楚如何做这样的事情,或者甚至可能.

这可能吗?如果是这样,怎么样?

gulp gulp-rename

6
推荐指数
1
解决办法
3250
查看次数