我的应用程序使用firebase的observeSingleEventOfType相当一点点,我开始意识到我的应用程序的内存随着时间的推移而增加.除了调用以下函数的测试按钮之外,我已经注释掉了我的所有代码.
func loadPostsTest() {
FIRDatabase.database().reference().child("posts").observeSingleEventOfType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in
print(snapshot.value)
})
}
Run Code Online (Sandbox Code Playgroud)
当程序启动时,我以大约2,3次的快速速度点击测试按钮并观察内存图,如下所示.内存上升,请求后不会恢复.从长远来看,这个问题影响我的应用程序,因为我的应用程序的内存将从70mb增长到150 + mb因此.有什么理由吗?
请注意,短暂的五秒休息是我停下来确保打印出所有"快照".
注2 ...当我停止按下按钮时,存储器保持与"短休息区"中所示的相同的水平.只是因为你认为它会无限期地自我增长
-------更新----------
为了进一步确认这个问题,我创建了一个全新的项目,其中没有任何内容,但是firebase导入,故事板中的一个按钮,带有以下代码并在我的6s上模拟(模拟器上的模拟似乎没有这个问题).下面的图片证明这里有一些可疑的火灾基地,因为我的记忆从11.1mb变为17.3mb,一分钟左右就有303个请求.
import UIKit
import Firebase
class ViewController: UIViewController {
var count: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func testBtnPressed(sender: AnyObject) {
FIRDatabase.database().reference().child("posts").observeSingleEventOfType(.Value, withBlock: {[weak self] (snapshot: FIRDataSnapshot) in
print(self?.count)
self?.count += 1
})
}
Run Code Online (Sandbox Code Playgroud) 我正在使用S3 bucket从我的swift项目上传图像,然而,我的上传暂停,并在控制台中给我以下警告.但是,我不确定为什么,但上传似乎自动重启,第二次几乎总是成功.之后的任何上传通常都很好.(只有当我暂时没有与服务器交互时
AWSiOSSDK v2.4.7 [Error] AWSURLSessionManager.m line:212 | -[AWSURLSessionManager URLSession:task:didCompleteWithError:] | Session task failed with error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x13eba2b50 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=https://s3.amazonaws.com/myBucketName/filename.jpg, NSErrorFailingURLKey=https://s3.amazonaws.com/myBucketName/filename.jpg, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
Run Code Online (Sandbox Code Playgroud)
下面是我如何将文件发送到S3
// 2. Create upload request
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.bucket = "myBucket"
uploadRequest.key = "FileName.jpg"
uploadRequest.ACL = AWSS3ObjectCannedACL.PublicRead
uploadRequest.contentType = "image/jpg"
uploadRequest.body = url
// Track progress through an AWSNetworkingUploadProgressBlock
uploadRequest?.uploadProgress = {[weak self](bytesSent:Int64, totalBytesSent:Int64, totalBytesExpectedToSend:Int64) in …Run Code Online (Sandbox Code Playgroud) 我试图关闭通过open(内容)函数呈现给我的模态,如ng-boostrap 文档中的示例所示.在网站上,它提到我可以致电NgbActiveModal关闭或解雇.
所以我在组件中包含了NgbActiveModal并尝试调用dismiss()或close().它们都不起作用.首先,dismiss()是未定义的(我导入NgbActiveModal错了吗?)当我调用close()时,似乎想调用lib.dom.d.ts中的一些奇怪的函数,这根本不是我想要的.所以对我而言,即使在我导入NgbActiveModal之后,似乎我也无法访问ng-bootstrap提供的关闭和关闭.请注意,我可以显示模态罚款
在该示例中,通过(click)="c('Close click')"关闭模态.我不知道它来自哪里.
那么......我怎样才能调用close()或dismiss()(无论哪个有效)来摆脱模态
我有一个FollowVC和FollowCell设置与集合视图.我可以使用以下代码正确地将所有数据显示到我的uIcollection视图单元格中,没有任何问题.
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if let cell = collectionView.dequeueReusableCellWithReuseIdentifier("FollowCell", forIndexPath: indexPath) as? FollowCell {
let post = posts[indexPath.row]
cell.configureCell(post, img: img)
if cell.selected == true {
cell.checkImg.hidden = false
} else {
cell.checkImg.hidden = true
}
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我还可以使用以下代码选择和取消选择多个图像
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if deletePressed == true {
let cell = collectionView.cellForItemAtIndexPath(indexPath) as! FollowCell
cell.checkImg.hidden = false
} else {
let post = posts[indexPath.row]
performSegueWithIdentifier(SEGUE_FOLLOW_TO_COMMENTVC, sender: post)
}
} …Run Code Online (Sandbox Code Playgroud) 我正在使用带有Bootstrap 4和Angular Material的角度2 .但是,我无法正确对齐容器div中的元素.我希望我的按钮和文本都与右侧对齐
以下是我尝试生成结果的代码,如照片所示
<div class="container">
<div class="pull-right">
<p class="d-inline pull-right">Some text</p>
<button type="button" class="btn btn-primary pull-right">+</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我也尝试过StackOverflow的这个解决方案
<div class="container">
<div class="asdf">
<p class="d-inline pull-right">Some text</p>
<button type="button" class="btn btn-primary pull-right">+</button>
</div>
</div>
.asdf {
margin-left:auto;
margin-right:0;
}
Run Code Online (Sandbox Code Playgroud)
这两种解决方案都不会将元素向右移动.我究竟做错了什么?
我已经完成了有关stackoverflow和Apple有关ARC和Weak/Unowned self的文档的研究(我们总是在Swift中使用[unowned self]内部封闭).我得到了关于强引用周期的基本概念以及它们如何导致内存泄漏的不好之处.但是,我试图在封闭时使用Weak/Unowned self.而不是进入"理论",我认为如果有人可以用我最底层的三个案例来解释它们,那真的会有所帮助.我的问题是
把弱者放在所有人身上是否可以(我认为第二种情况是没有必要的,因为我看到UIView与自我无关的某个地方?但是,如果我把弱自我放在那里,有什么可以导致的吗?我头痛?
如果答案是否定的话,你不能在所有三种情况下把弱自我放在任何地方,如果我这样做会发生什么(示例响应会很受欢迎...例如,程序会在这个VC时崩溃....
这就是我计划在封闭之外使用weakSelf的方法,我把弱变量weakSelf = self然后用weakSelf替换所有自我的封闭?可以吗?
Case 1:
FIRAuth.auth()?.signInWithCredential(credential, completion: { (user: FIRUser?, error: NSError?) in
self.activityIndicatorEnd()
self.performSegueWithIdentifier(SEGUE_DISCOVER_VC, sender: self)
})
Case 2:
UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.1, animations: {
self.messageLbl.alpha = 0.5
})
Case 3:
//checkUserLoggedIn sends a request to firebase and waits for a response to see if the user is still authorised
checkUserLoggedIn { (success) in
if success == false {
// We should go back to login VC automatically
} else {
self.discoverTableView.delegate …Run Code Online (Sandbox Code Playgroud)我正在尝试使用ng2-datetime.但是,当我按照说明并安装npm install --save ng2-datetime时,我收到以下错误.
我已经尝试运行以下npm安装但它没有解决任何问题.
npm install jquery --save
npm install @types/jquery --save-dev
Run Code Online (Sandbox Code Playgroud)
我的package.json文件
{
"name": "timesheet-web-app",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"ng": "ng",
"start": "ng serve",
"lint": "tslint \"src/**/*.ts\"",
"test": "ng test",
"pree2e": "webdriver-manager update --standalone false --gecko false",
"e2e": "protractor"
},
"private": true,
"dependencies": {
"@angular/common": "^2.3.1",
"@angular/compiler": "^2.3.1",
"@angular/core": "^2.3.1",
"@angular/forms": "^2.3.1",
"@angular/http": "^2.3.1",
"@angular/platform-browser": "^2.3.1",
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"@ng-bootstrap/ng-bootstrap": "^1.0.0-alpha.18",
"angularfire2": "^2.0.0-beta.7",
"bootstrap": "^4.0.0-alpha.6",
"bootstrap-datepicker": "^1.6.4",
"core-js": "^2.4.1",
"firebase": "^3.6.6",
"jquery": "^3.1.1", …Run Code Online (Sandbox Code Playgroud) 我在我的Macbook Air上运行我的应用程序和我的Iphone 6s,下面的图像是我浏览应用程序中的所有UI后的内存使用情况.在这两个场景中,我执行了类似的任务和持续时间.为什么模拟器的内存使用量比实际设备高得多.即使设备内存使用情况似乎合理,我是否应该担心?
我是新人,正在试验Angular2.我发现dist文件夹中的文件非常大,有一个由angular cli创建的空项目
这是我采取的步骤
我的dist文件夹里面的所有文件都是1.1mb!我相信它们都是部署所需的文件.尽可能放弃这个的最佳方法是什么?

---更新---运行build -e = prod --prod --no-sourcemap --aot后
尺寸下降到大约500kb.哪个好50%.但是,这篇文章Angular 2:减少应用程序大小提到文件大小已降至<100kb.好像这个家伙忽略了main.a2eb733289ef46cb798c.bundle.js由于某种原因是452kb的事实?我应该在dist文件夹中部署所有文件,如下图所示?或者我可以忽略一些来减少部署的规模?我确实在网上看到Angular团队设法将基本启动应用程序的文件大小降低到50kb.
我使用的反应模式非常棒.是否可以动态调整它(可能使用css media标签).例如,
ios ×4
swift ×4
angular ×3
css ×2
javascript ×2
xcode ×2
amazon-s3 ×1
bootstrap-4 ×1
closures ×1
firebase ×1
html ×1
iphone ×1
jquery ×1
memory ×1
ng-bootstrap ×1
node.js ×1
objective-c ×1
react-modal ×1
reactjs ×1
simulator ×1