小编Joh*_*her的帖子

如何在Mac上以编程方式阅读Chrome和Firefox的缓存?

背景

我想在我的Cocoa应用程序中访问Chrome和Firefox的缓存.我需要获取最近访问过的页面的HTML.Safari是小菜一碟 - 所有这些信息都可以在SQLite数据存储中获得,但在Chrome和Firefox中却不是这样.

问题

对于Firefox,缓存位于/Library/Caches/Firefox/Profiles/xxx.default/Cache中,文件名为_CACHE_001_ _CACHE_002_ _CACHE_003_和_CACHE_MAP_

对于Chrome,缓存位于/ Library/Caches/Google/Chrome/Default/Cache中,文件名为data_0 data_1 data_2和data_3

我试过的

我能找到的唯一一篇文章,阐明了什么样的格式,这些缓存是在任何光线就在这里.它建议使用缓存查看器工具,但不解释如何以编程方式执行此操作.

问题

  1. 有没有办法使用命令行工具或Cocoa框架重建这些数据?还是它太低了?

  2. 有没有其他方法来获取我不知道的最近网页的HTML?

macos firefox cocoa caching google-chrome

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

Snow Leopard和Leopard的一个代码库

背景

我是一名开发人员,他正在为Mac构建应用程序.我即将抓住Snow Leopard.到目前为止,我一直在使用Leopard.我只做了大约一年的可可开发而不是非常激烈.

我特别读了很多关于雪豹和大中央调度的文章.我知道它使用了块,但我还没有深入了解块如何工作或者Grand Central Dispatch如何工作.

我的问题

我如何最好地为Snow Leopard和Leopard开发一个代码库,同时充分利用Snow Leopard中新的多线程内容?

NSOperationQueue

我的直觉不是直接在我的代码中处理GCD,但是当事情需要放入队列时,使用NSOperationQueue,因为我从Mike Ashes Q&A会话中读到,在Snow Leopard中,NSOperationQueue充分利用了GCD和crasher他在Leopard中发现现在已被修复.

手动线程管理

但是,当涉及到管理特定的后台线程时,有没有办法利用Snow Leopard中更容易使用的线程管理功能而不会破坏Leopard中的东西?或者人们会建议每个操作系统有不同的目标,每个操作系统有不同的类?这对我来说似乎是一场等待发生的维护噩梦.

或者也许我应该只是没有完全为Snow Leopard完善我的应用程序并坚持+(void)detachNewThreadSelector:toTarget:withObject:或类似的东西.

人们怎么想?

cocoa objective-c osx-snow-leopard grand-central-dispatch

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

有没有办法在进程之间共享Core Data存储?

我想做什么?

  1. 一个UI进程,用于从磁盘上的Core Data存储中读取数据.它不需要编辑数据,只需读取和显示数据.

  2. 命令行进程,写入UI访问的同一数据存储.

为什么?

这样命令行进程可以一直运行,但用户可以退出UI进程并忘记应用程序,直到他们需要查看捕获的数据.

实现这一目标的最简单,最可靠的方法是什么?

我尝试过什么?

我已经读过在线程之间共享数据存储并实现过一次,但我在文档或Web上找不到任何指示如何在进程之间共享存储的内容.

是否将两个进程指向同一个数据存储文件一样简单?我简要地试验过这个.它似乎工作正常,但我担心我可能遇到锁定等问题,当它真的处于压力之下.

最后

我真的很感谢有人给我指点这个方向.谢谢.

cocoa core-data process objective-c

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

如何安全地强制关机

我想要的是

我正在开发一个小应用程序迫使我只在一天中的某些时间工作 - 我需要一些东西迫使我在晚上停止工作,这样我才能在白天更有效.

OS X中用于在特定时间关闭我的机器的选项太容易取消.然后您可以随时重新登录.

我希望我的应用程序退出所有应用程序,无论他们是否有未保存的工作.

我试过的

我想杀死loginwindow进程,但我读过这会导致数据损坏.

我遇到了shutdown命令 - 我正在使用sudo shutdown -h +0立即关闭.这似乎只是票证,但我担心如果磁盘工具正在进行某种扫描,它可能会导致数据损坏.

关机命令安全吗?

shutdown命令会导致损坏吗?或者使用安全吗?是否有更好的方法可以安全地强制关机?

macos shell cocoa shutdown

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

在非连续版本之间迁移时出现核心数据迁移错误

问题

  • 我有13个版本的核心数据模型.
  • 我制作了13种测绘模型(V1-V2,V2-V3等)
  • 我已经开启了自动迁移功能.
  • 在两个连续版本(例如V12-V13)之间的迁移中,迁移工作完美
  • 在两个非连续版本(例如V11-V13)之间迁移时,迁移失败并显示错误:

    Can't find mapping model for migration

我试过的

为每个可能的版本组合创建映射模型.这有效,但这是一个真正的麻烦.

对于版本14,我需要制作14种不同的映射模型.手动.啊.

这是我传入的用于迁移的选项:

[persistentStoreCoordinator addPersistentStoreWithType:[self storeType]
                                          configuration:nil 
                                                    URL:url 
                                                options:[NSDictionary dictionaryWithObjectsAndKeys:
                                                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                                                         [NSNumber numberWithBool:NO], NSReadOnlyPersistentStoreOption,
                                                         nil]
                                                  error:&error]){
Run Code Online (Sandbox Code Playgroud)

数据模型

我的数据模型非常复杂,但它是:http://dl.dropbox.com/u/136780/Engine_V2_DataModel.xcdatamodeld.zip

我现在没有在我的数据模型中使用任何版本哈希修饰符或重命名标识符.

cocoa core-data core-data-migration

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

如何在基于SSD的Mac上模拟正常的硬盘性能?

我想要的是

我想在基于SSD的开发机器上模拟普通硬盘的性能.

背景

我正在使用SSD在Macbook上开发Mac应用程序.它的速度非常快.

如果有人有标准的硬盘驱动器,我的应用程序对他们来说会更慢.我的应用程序也很重视Core Data,因此磁盘访问速度将是一个重要因素.

我担心我使用仪器进行的性能测量看起来很好,但是当客户在他们的普通硬盘上运行我的应用程序时,它将会非常缓慢.

我试过的

在我安装SSD之前,我测量了我的应用程序在仪器中的性能.安装完成后,我再次测量它,两个基准测试完全一致.

这对我来说没有意义.我确信我在这里做错了什么.仪器可能测量时钟速度,而不是墙壁时间速度.但是,当然硬盘的速度肯定会影响我所采用的基准?还是仪器会以某种方式弥补这一点?

performance cocoa solid-state-drive instruments

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

为什么要使用类方法构造函数而不是alloc/init?

Objective C/Cocoa中的构造函数有两种选择:

1.类构造函数

Product *product = [Product productWithIdentifier:@"Chocolate"];
// Use product
Run Code Online (Sandbox Code Playgroud)

2. Alloc/init构造函数

Product *product = [[Product alloc] initWithIdentifier:@"Chocolate"];
// Use product
[product release];
Run Code Online (Sandbox Code Playgroud)

我所做的

  • 我倾向于使用类方法只是因为它看起来更干净而且你不需要发布.
  • 我看到很多alloc/init - 这样做有什么好处?

我的问题

  • 哪个更好?或者只是品味问题?

对于上下文,Product类将具有以下内容:

+(Product *)productWithIdentifier:(NSString *)identifier_ {
   return [[[[self class] alloc] initWithIdentifier:identifier] autorelease];
}

-(Product *)initWithIndentifier:(NSString *)identifier_ {
   self = [super init]
   if (self) {
       identifier = identifier_;
   }
   return self;
}
Run Code Online (Sandbox Code Playgroud)

constructor memory-management objective-c

6
推荐指数
2
解决办法
1385
查看次数

如何测试客户如何使用我的Cocoa应用程序?

我很想知道客户如何在我的Cocoa应用程序中使用功能.

我想建立人们使用哪些功能以及如何使用它们的统计信息,以便我可以衡量我正在实现的功能的价值.

我正在构建一个在Snow Leopard上运行的桌面应用程序.

当然,这种反馈将是选择加入和匿名的.

有没有人知道任何已经开发出来的框架可以实现这一目标而无需我从头开始编写东西?

testing cocoa feedback

5
推荐指数
1
解决办法
160
查看次数

为什么我不能在超级上调用核心数据访问器?

背景

我正在使用相当优秀的发电机来自动生成我的核心数据访问器.

mogenerator构造如下类:

NSManagedObject
    _JGTrainingBase
        JGTrainingBase
            _JGTrainingGroup 
                JGTrainingGroup
Run Code Online (Sandbox Code Playgroud)
  • 以下划线开头的类是由mogenerator通过核心数据访问器生成的机器.

  • 没有下划线的类是人类可编辑的类,因此您可以在其中放置自定义方法,而不是在更改数据模型和重新运行生成器时将其覆盖.

  • 培训组实体有许多称为"孩子"的关系.

  • 我正在使用Core Data访问器来修改我的关系.

我想要的是

我想在添加子对象之前更新持续时间 - 瞬态属性.

问题

我的守则

@implementation JGTrainingGroup
...
-(void)addChildrenObject:(JGTrainingGroup *)value_ {
    [self updateDuration];
    [super addChildrenObject:value_];
}
...
@end
Run Code Online (Sandbox Code Playgroud)

但是,当我调用此方法时,我收到一条错误消息:

[JGTrainingGroup addChildrenObject:]: unrecognized selector sent to instance 0x10667fa30
Run Code Online (Sandbox Code Playgroud)

生成的代码

@interface _JGTrainingBase : NSManagedObject {}
// Method declarations
@end

@interface _JGTrainingBase (CoreDataGeneratedAccessors)
- (void)addChildrenObject:(JGTrainingBase*)value_;
- (void)removeChildrenObject:(JGTrainingBase*)value_;
// Lots more methods
@end
Run Code Online (Sandbox Code Playgroud)

问题

  1. 为什么super不响应addChildrenObject:方法?这些是以类别风格添加的吗?

  2. 如何从子类访问Core Data生成的方法?

注意

我意识到我可以使用primitiveValueForKey来添加子对象到类:但是这意味着我正在重写核心数据访问器,从而浪费我的时间并且可能使我的代码有问题.我相信Apple的方法会比我能编写的任何方法都好.

感谢您提供任何帮助我了解这里发生了什么的意见.

overloading core-data objective-c super

5
推荐指数
1
解决办法
1078
查看次数

NoMethodError:使用Mocha和Rails 3的未定义方法`mock'

我正在尝试在我的Rails 3项目中使用mocha但是仍然遇到以下异常:

NoMethodError: undefined method `mock' for #<MochaTest:0x00000101f434e8>
    /Users/John/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.10/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing'
    test/functional/mocha_test.rb:7:in `block in <class:MochaTest>'
Run Code Online (Sandbox Code Playgroud)

测试

我写过最简单的测试:

require 'test_helper'

class MochaTest < ActionController::TestCase
  test "test mocha" do
    order = mock('order')
  end
end
Run Code Online (Sandbox Code Playgroud)

我用它来运行它 ruby -Itest test/functional/mocha_test.rb

我试过rake test,它给出了完全相同的异常.

test_helper.rb中

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  #....
  require 'test/unit'
  require 'mocha' 
end
Run Code Online (Sandbox Code Playgroud)

的Gemfile

source 'http://rubygems.org'

gem 'rails', '3.0.10'
gem 'sqlite3'
gem 'devise', '1.4.5'
gem 'activemerchant'
gem 'geo_location'
gem 'nokogiri'
gem "nifty-generators", :group => :development
gem 'mocha', …
Run Code Online (Sandbox Code Playgroud)

testing mocking mocha.js ruby-on-rails-3

5
推荐指数
1
解决办法
3404
查看次数