小编art*_*ras的帖子

MKMapView发布内存

我已经按照几个SO问题提供的建议,比如这个问题,以便MKMapView从内存中释放- 我的代码如下

- (void)viewDidDisappear:(BOOL)animated {

    [super viewDidDisappear:animated];

    self.map.mapType = MKMapTypeHybrid;
    self.map.showsUserLocation = NO;
    self.map.delegate = nil;
    [self.map removeFromSuperview];
    self.map = nil;

    self.locationManager.delegate = nil;
}
Run Code Online (Sandbox Code Playgroud)

在某种程度上,它有效,但不完全.我来提供一些数据.

以下是Instruments的内存分配记录.

在此输入图像描述

两个红色标记(Generations)表示我MKMapView在模态视图控制器中显示之前的状态以及我解除它之后的状态.MKMapView好像被解除了分配.例如,如果我在Instruments中过滤Statistics堆栈,则在MKMapView呈现模态视图时确实会出现该对象,并且一旦关闭它就会消失.但是,在取消了地图视图后,我仍然有30多MB的内存尚未被释放.

第B代(第二个红旗)数据显示存在大量保存此内存的对象(和非对象).

在此输入图像描述

当我查看其中一个实例的扩展细节时,它通常会显示一个包含私有类的堆栈跟踪,我猜这些私有类与地图绘制有关 在此输入图像描述

有谁知道如何释放所有数据?我可以/应该清理一些缓存吗?

memory objective-c mkmapview ios

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

将 UISearchBar 取消按钮更改为图标

我想将UISearchBarCancel按钮更改为只有图像而没有文本的按钮。这就是我远离原始行为的地方

在此输入图像描述

对此

在此输入图像描述

朝着正确的方向迈出了一步,但问题是按钮太宽了。当我调试视图时,我可以看到它的左侧和右侧有 11 个点的按钮标签插入。有谁知道如何使按钮适合内容大小?图像是正方形的。

这是我的自定义按钮的代码:

UIBarButtonItem *barButtonAppearanceInSearchBar;

if (IOS9) {
    barButtonAppearanceInSearchBar = [UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]];
} else {
    barButtonAppearanceInSearchBar = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil];
}

barButtonAppearanceInSearchBar.image = [UIImage imageNamed:@"Close"];
barButtonAppearanceInSearchBar.title = nil;
Run Code Online (Sandbox Code Playgroud)

另一个奇怪的问题是,当我关闭搜索栏并再次激活它时,按钮图像变暗(它仍然存在,我在调试视图时可以看到它),所以它看起来像这样

在此输入图像描述

知道如何使图标保持白色吗?我尝试了以下方法,但没有结果:

- (void)willPresentSearchController:(UISearchController *)searchController {

    searchController.searchBar.tintColor = [UIColor whiteColor];
}
Run Code Online (Sandbox Code Playgroud)

objective-c uibarbuttonitem uisearchbar ios uisearchcontroller

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

moment.js startOf问题

我正在尝试使用一天的开始和结束(这是从今天开始的几天)moment.js.这是我的代码:

var today = moment();
var day = today.add(-5, "days");
var startOfDay = day.startOf("day");
var endOfDay = day.endOf("day");

console.log("today " + today.format());
console.log("day " + day.format());
console.log("start " + startOfDay.format());
console.log("end " + endOfDay.format());
Run Code Online (Sandbox Code Playgroud)

这些是日志:

I2015-11-10T15:19:02.930Z]today 2015-11-10T15:19:02+00:00
I2015-11-10T15:19:02.931Z]day 2015-11-05T15:19:02+00:00
I2015-11-10T15:19:02.932Z]start 2015-11-05T23:59:59+00:00
I2015-11-10T15:19:02.933Z]end 2015-11-05T23:59:59+00:00
Run Code Online (Sandbox Code Playgroud)

如您所见,startend日期完全相同.该end日期与预期一致,但startOf功能似乎是做什么endOf功能呢.

是否有我遗失的东西?

javascript momentjs

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

npm list 不显示已安装的包

我很难理解npm。我有一个node.js项目react,但我无法找到后者npm list

我当然安装了它,因为我的项目使用react有效。

package.json在“依赖项”下的文件中也有它:

"dependencies": {
    "react": "^16.4.1"
}
Run Code Online (Sandbox Code Playgroud)

另外,如果我react在我的驱动器上搜索,我会在我的项目文件夹中找到它的模块:

user/Dev/project/node_modules/react
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做npm list react,我将一无所获:

me ~/D/project> npm list react
project@0.1.0 /Users/me/Dev/project
??? (empty)
Run Code Online (Sandbox Code Playgroud)

即使我做了npm install甚至特地npm install react --save,也没有改变。

包也没有列出npm listnpm list -g(有或没有--depth=0),除非我得到进一步的迹象表明npm没有“看到”react模块:

UNMET PEER DEPENDENCY react@16.4.1
Run Code Online (Sandbox Code Playgroud)

我正在使用npm v5.6.0.

有任何想法吗?

node.js npm

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

测试可加载的组件

我在测试React使用的组件时遇到了麻烦react-loadable。说,我有一个Button组件,取决于它是否接收icon道具,它会Icon像这样加载一个组件:

Button.js

const LoadableIcon =  Loadable({
  loader: () => import('./Icon'),
  loading: () => <div>Loading...</div>
})

function Button(props) {
  return (
    <button 
      onClick={props.onClick}>
      {props.icon &&
        <LoadableIcon name={props.icon} />}
      {props.children}
    </button>
  )
}
Run Code Online (Sandbox Code Playgroud)

但是,当我测试该组件时,Icon尚未加载,而是测试仅找到了<div>Loading...</div>元素...

Button.test.js

import React from 'react'
import {render} from 'react-testing-library'

import Button from '../Button'


describe('Button', () => {
  it('renders icon correctly', () => {
    const {getByText} = render(
      <Button 
        icon='add' 
      />
    )
    expect(getByText('add')).toBeInTheDocument()
  })
}) …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-loadable react-testing-library

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

jest 中的模拟动画完成回调

Jest我正在尝试为React使用Transitionfrom的组件编写单元测试react-transition-group。我需要模拟,Transition这样我的测试就不必等待动画完成。但是,除了“跳过”动画之外,我还需要在我的模拟组件onExited上触发回调。Transition

这是我的Component.js使用方式Transition

...
return (
  <Transition
    timeout={1500}
    in={this.state.show}
    onExited={handleExited}>
    {status =>
      <button onClick={this.setState({show: false}) className={`component-${status}`}>button</button>
    }
  </Transition>
)
Run Code Online (Sandbox Code Playgroud)

这是我的Component.test.js

import React from 'react'
import {render, fireEvent} from 'react-testing-library'

import Component from '../Component'

test('check', () => {
  const handleCompletion = jest.fn()
  const {getByText} = render(
    <Component
      onButtonClick={handleCompletion}
    />
  )
  const button = getByText('button')
  fireEvent.click(button)
  expect(handleCompletion).toHaveBeenCalledTimes(1)
})
Run Code Online (Sandbox Code Playgroud)

这个想法是,一旦button单击 a,组件就会产生动画,然后在完成后触发回调。

如何Transition正确模拟,以便它跳过动画但仍然触发 …

mocking reactjs jestjs react-transition-group

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

具有样式组件的TypeScript

这里是TypeScript新手。我有一个下面的组件styled-components,希望将其转换为TypeScript

import React from 'react'
import PropTypes from 'prop-types'
import styled from 'styled-components'


const propTypes = {
  name: PropTypes.string.isRequired // https://material.io/tools/icons/?style=baseline
}

const Icon = styled(({name, className, ...props}) => <i className={`material-icons ${className}`} {...props}>{name}</i>)`
  font-size: ${props => props.theme.sizeLarger};
`

Icon.propTypes = propTypes

export default Icon
Run Code Online (Sandbox Code Playgroud)

我知道我可以代替我propTypesinterface

interface Props {
  name: string
}
Run Code Online (Sandbox Code Playgroud)

但是,TypeScript抱怨我没有className声明。问题是,理想情况下,我希望将interface用作开发人员可以提供的道具规范,而不必声明诸如classNametheme由注入的道具styled-components

如何正确地将此组件转换为TypeScript?

typescript reactjs styled-components

5
推荐指数
2
解决办法
2418
查看次数

使用现有函数将 Next.js 应用部署到 Firebase Functions

在学习了一些像这样的教程之后,我能够将我的Next.js应用程序部署到 Firebase Hosting/Functions。这是我的项目的简化文件夹结构:

myApp
  node_modules // Next.js app dependencies
  .next // destination of npm run build of the Next.js project
  pages // Next.js pages
  functions
    lib // this is where the functions compile
    node_modules // functions' dependencies
    src
      app.ts
      index.ts
      other.ts
    package.json
  public // Next.js app public files
  firebase.json
  package.json
  ...
Run Code Online (Sandbox Code Playgroud)

当我运行时firebase deploy,它会编译functions到其lib文件夹中并成功部署所有内容。

但是,当我尝试访问我的网络应用程序的 url 时,我得到了Error: could not handle the request. 当我查看 Firebase Functions 日志时,我可以看到一条错误消息Error: Cannot find …

firebase google-cloud-functions next.js

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

Cypress cy.visit 不会随请求发送 cookie

我在运行测试时遇到了奇怪的行为Cypress。似乎cy.visit()无法通过请求发送 cookie。

首先,是的,cypress/supports/index.js我已经设置了:

Cypress.Cookies.defaults({
  preserve: 'token'
})
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我执行以下操作:

it('test', () => {
  cy.logIn()
  cy.getCookie('token').then(console.log)
  cy.visit('/')
  // verify that the user is redirected to /home, which it isn't...
})
Run Code Online (Sandbox Code Playgroud)

为了让用户登录,我运行自定义logIn()命令,该命令成功地使用户登录。执行此操作后,应用程序会设置一个token以会话令牌命名的 cookie。然后我console.log在调用之前成功获取了 cookie cy.visit()。但是,我的后端收到没有 cookie 的请求,因此没有按预期执行重定向...

有人遇到过类似的事情吗?有什么想法可能会发生什么吗?

cookies cypress

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

斯坦福 NLP 解析树格式

这可能是一个愚蠢的问题,但是如何迭代解析树作为 NLP 解析器的输出(如斯坦福 NLP)?它都是嵌套的括号,既不是 anarray也不是dictionary我使用过的任何其他集合类型。

(ROOT\n  (S\n    (PP (IN As)\n      (NP (DT an) (NN accountant)))\n    (NP (PRP I))\n    (VP (VBP want)\n      (S\n        (VP (TO to)\n          (VP (VB make)\n            (NP (DT a) (NN payment))))))))
Run Code Online (Sandbox Code Playgroud)

nlp parse-tree stanford-nlp

4
推荐指数
1
解决办法
4400
查看次数